为什么此代码不起作用:
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
}
}
答案 0 :(得分:2)
您的代码无效,因为:
static
不是有效类型static
对象必须在类的定义之外进行初始化,以便在代码中的其他地方使用。你需要这样的东西:Fred Fred::sharedFred;
在主()
括号之前的函数名前面有{}
main
函数的范围内才能使用它们,并且还要在彼此的范围内,具体取决于调用的内容。即必须在课程之后宣布主要课程,并且每个课程调用另一个public
后跟冒号