通过构造函数将对象传递给类

时间:2013-10-02 20:59:04

标签: c++

为什么此代码不起作用:

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 
 }
}

1 个答案:

答案 0 :(得分:2)

您的代码无效,因为:

  • 声明类
  • 后需要分号
  • static不是有效类型
  • static对象必须在类的定义之外进行初始化,以便在代码中的其他地方使用。你需要这样的东西:Fred Fred::sharedFred;在主
  • 之前
  • 函数声明必须在()括号之前的函数名前面有{}
  • 这些类必须在main函数的范围内才能使用它们,并且还要在彼此的范围内,具体取决于调用的内容。即必须在课程之后宣布主要课程,并且每个课程调用另一个
  • 课程相同
  • 默认情况下,class中声明的属性/方法是私有的。要公开属性/方法组,请在组顶部使用关键字public后跟冒号