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

Pass Object to Class via Constructor

本文关键字:对象 构造函数      更新时间:2023-10-16

为什么这段代码不起作用:

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

您的代码不起作用,因为:

  • 在声明类后需要一个分号
  • static不是有效的类型
  • static对象必须在类中的定义之外进行初始化,才能在代码中的其他地方使用。你需要这样的东西:在主要之前Fred Fred::sharedFred;
  • 函数的声明必须在{}大括号前的函数名称前面有()
  • 这些类必须在main函数的范围内才能使用它们,并且根据调用什么在调用什么而彼此的范围内。
  • 默认情况下,类中声明的属性/方法是私有的。若要公开属性/方法组,请在组顶部添加关键字public后跟冒号