-6

このコードが機能しない理由:

int main () {

Bob bob;
bob.giveANewFredSomeData();
Fred::sharedFred.getANumber(); //Crashes here due to someData inside fred being NULL

return 0;
}

Class Data {
    int aNumber;
}

Class Bob {
   void giveANewFredSomeData{
     Data data;

     Fred::sharedFred = new Fred(data);

   }
}

Class Fred {
  Data someData;

  static sharedFred;

  Fred (Data data) {
    someData = data;
  }

  int getANumber(){
   return someData.aNumber 
 }
}
4

1 に答える 1

2

次の理由により、コードが機能していません。

  • クラスの宣言の後にセミコロンが必要です
  • staticは有効なタイプではありません
  • staticオブジェクトは、コード内の他の場所で使用するために、クラス内の定義の外で初期化する必要があります。次のようなものが必要です:Fred Fred::sharedFred;メインの前に
  • 関数の宣言は、中括弧()の前の関数名の前になければなりません{}
  • クラスは、mainそれらが使用される関数のスコープ内にある必要があり、また、何が何を呼び出しているかに応じて、互いのスコープ内にある必要があります。つまり、メインはクラスの後に宣言する必要があり、別のクラスを呼び出す各クラスでも同じです
  • クラスで宣言されたプロパティ/メソッドは、デフォルトでプライベートです。プロパティ/メソッドのグループを公開するにpublicは、グループの先頭にキーワードの後に​​コロンを付けます
于 2013-10-02T22:04:13.123 に答える