C++ Initialisierung des nicht Konstanten statischen member-variable?
Habe ich eine Qualifikation, die Fehler der member-variable 'objectCount'. Der compiler gibt auch 'ISO-C++ verbietet in-class-Initialisierung von non-const static member'.
Dies ist die main-Klasse:
#include <iostream>
#include "Tree.h"
using namespace std;
int main()
{
Tree oak;
Tree elm;
Tree pine;
cout << "**********\noak: " << oak.getObjectCount()<< endl;
cout << "**********\nelm: " << elm.getObjectCount()<< endl;
cout << "**********\npine: " << pine.getObjectCount()<< endl;
}
Dies ist die tree-Klasse, die enthält die non-const static objectCount:
#ifndef TREE_H_INCLUDED
#define TREE_H_INCLUDED
class Tree
{
private:
static int objectCount;
public:
Tree()
{
objectCount++;
}
int getObjectCount() const
{
return objectCount;
}
int Tree::objectCount = 0;
}
#endif //TREE_H_INCLUDED
- Es gibt eine alternative, die nicht erwähnt wird in eine der vorgeschlagenen Antworten zum Zeitpunkt des Schreibens dieses Artikels, die Ihnen ermöglicht, halten alles in einem single header. Siehe das Beispiel in dies ALSO Antwort, er ordnet sich perfekt an deinen Beispiel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie definieren die statische variable in der Quelle-Datei, die diese header.
Tree::objectCount = 0;
außerhalb der Klasse, und ich habe zum Ende der Klasse header mit Semikolon dankeDie oben genannten Zeile sollte außerhalb der Klasse, und in
.cpp
- Datei, wie unten gezeigt:Müssen Sie definieren, die es außerhalb des Bereichs in einer einzelnen C++ - Datei, nicht in der Kopfzeile.