Seite 1 von 1

tutorial fail?

Verfasst: Fr Feb 24, 2017 11:39 pm
von mikemaster
Bei statischen membern -> https://www.proggen.org/doku.php?id=cpp:class:static
class Math
{
public:
static double PI = 3.14159265;
};
Hier wird (meinem Verständnis nach) eine Variable PI deklariert und ihr der Wert 3.14159265 zugewiesen.

laut tutorial sollte dies funktionieren...

mein visual Studio gibt mir jedoch den Fehler:

C2864 "Math::PI" : Eine statische "Datenmember" mit einem Initialisierer in der Klasse muss einen nicht flüchtigen konstant integralen Typ aufweisen.

wenn ich das static weg lasse funktioniert allerdings alles...

hoffe jemand kann mir erklären was da vor sich geht, wenn man gerade dabei ist das alles zu lernen, is sowas etwas schwer zu kapieren xD

Re: tutorial fail?

Verfasst: Sa Feb 25, 2017 3:01 pm
von Xin
Hmm... ja, Tutorial fail ;)

Ich bin der Meinung, dass das früher für Primitive (int, double...) funktionierte, wenn ich mir allerdings überlege, wie das geht, würde ich das auch nicht so umsetzen.

Korrekt ist es, dass Du die statische Varibale in der Klasse deklarierst

Code: Alles auswählen

math.h:

class Math
{
  static double PI;
};
und sie dann in einer Implementierungsdatei definierst:
math.cpp

Code: Alles auswählen

double Math::PI = 3.1415;
PI ist an der Stelle allerdings variabel, man kann PI also im Lauf des Programms ändern. Derartig statische Objekte sind meist Konstant:

Code: Alles auswählen

math.h:

class Math
{
  static double const PI;
};
math.cpp

Code: Alles auswählen

double const Math::PI = 3.1415;
Danke für den Hinweis, über die Seite muss ich wohl nochmal drüber.

Re: tutorial fail?

Verfasst: Sa Feb 25, 2017 11:49 pm
von mikemaster
Oh, danke für die Antwort und die gute Erklärung, so macht das alles direkt Sinn :)