0
01 class Flugzeug {
02 private:
03 const unsigned int nr;
04 unsigned int sitze;
05 static int serienNr;
06 public:
07 Flugzeug(unsigned int sitze);
08 static int getSerienNr();
09 };
10
11 static int serienNr = 4700;
12
13 Flugzeug::Flugzeug(unsigned int sitze) {
14
15 this->sitze = sitze;
16 }
17 static int getSerienNr(){
18 return serienNr++;
19 }
メンバ "nr"を初期化する必要があります。私は初期化子リストでそれを初期化する必要がありコンストラクタの初期化子リストで静的属性または関数を呼び出す
13 error: uninitialized member 'Flugzeug::nr' with 'const' type 'const unsigned int'
14 error: assignment of read-only member 'Flugzeug::nr'
わかりました:私は
14 this->nr = serienNr++;
を置く場合 それがいることを私に教えてくれるか? は、だから私は
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(serienNr++) {
を入れて、それが私に教えてくれます:
13 undefined reference to 'Flugzeug::serienNr'
を私はそれらのすべてを試してみました:
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(serienNr++) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(getSerienNr()) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(Flugzeug::serienNr) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(Flugzeug->serienNr) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(Flugzeug.serienNr) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(this::serienNr) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(this->serienNr) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(this.serienNr) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(Flugzeug::getSerienNr()) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(Flugzeug->getSerienNr()) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(Flugzeug.getSerienNr()) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(this::getSerienNr()) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(this->getSerienNr()) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(this.getSerienNr()) {
静的メンバまたは静的関数でconstメンバを初期化する方法は?
おかげ - Enomine
デストラクタが間違っています。これは 'delete [] typ;'で、 'typ typ;ではなく' 'でなければなりません。コピーコンストラクタも間違っています。文字列をコピーしないので、ポインタを代入するだけです。したがって、他のインスタンスが削除された場合、そのポインタは未定義の動作を引き起こします。 – Vallentin