11 Stimmen

Statische Konstante double in C++

Ist dies der richtige Weg, um eine statische konstante Variable zu verwenden? In meiner Top-Level-Klasse (Shape)

#ifndef SHAPE_H
#define SHAPE_H

class Shape
{
public:

    static const double pi;
private:
    double originX;
    double originY;
};

const double Shape::pi = 3.14159265;

#endif

Und dann später in einer Klasse, die Shape erweitert, verwende ich Shape::pi. Ich erhalte einen Linker-Fehler. Ich habe die const double Shape::pi = 3.14... in die Datei Shape.cpp verschoben und mein Programm lässt sich dann kompilieren. Warum passiert das? Danke.

0voto

Oliver Punkte 700

Für primitive Datentypen (wie int, double, aber nicht char[]) können Sie die Konstante auch innerhalb der Klassendefinition in der Header-Datei definieren, z.B.:

class Shape
{
public:
    static const double pi = 3.14159265;

private:
    double originX;
    double originY;
};

Dies wird eine bessere Compiler-Optimierung ermöglichen.

Bearbeiten: Wie Dennis weiter unten ausführte, ist dies nur für ganzzahlige Typen und nicht für Double- oder Float-Datentypen zulässig (einige Compiler erlauben dies jedoch).

0voto

Implementieren Sie eine Funktion, die den Index eines Wertes in der Liste zurückgibt, wenn er existiert. Andernfalls wird -1 zurückgegeben, wenn es keinen Wert gibt. Wenn derselbe Wert mehr als einmal in der Liste vorhanden ist, wird der erste Wert von unten gelöscht.

public static intfindFromLast (List <Double> l, double value ) {///…}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X