如何转发声明 class 中的对象? (C++)
How do I forward declare an object in a class? (C++)
基本上,我有一个全局 class 和一个播放器 class。它们都在它们的 ObjPlayer.h/ObjPlayer.cpp 中定义,对于全局也是一样的。但是如何在 ObjGlobal 中转发声明 ObjPlayer 的实例?
这是我的:(定义构造函数,class 减速在别处。)
//Create all the objects
GlobalClass::GlobalClass(void)
{
//Create a player for testing
ObjPlayer oPlayer(4, 8);
}
但由于它在构造函数中,我认为我无法像在主函数中那样访问 class。
int main()
{
GlobalClass oGlobal();
oGlobal.oPlayer.showVars(); //Doesn't work...
system("PAUSE");
return 0;
}
(我知道我不应该使用系统,它只是为了调试。)
我很困惑,我不知道如何解决这个问题。 (我对 C++ 很菜鸟,我的主要语言是 GML...)
非常感谢对此问题的任何帮助。
在 ob 全局头文件中,在 class 声明之前 ad:
class oPlayer;
您正在构造函数中创建和销毁局部变量,而不是 class 成员。构造函数完成后,它不再存在,因此无法从外部访问它。
class 成员需要在 class:
中声明
class GlobalClass {
//...
ObjPlayer oPlayer;
//...
};
可由构造函数初始化:
GlobalClass::GlobalClass() : oPlayer(4,8) {}
并且(如果 public)按您的需要访问:
GlobalClass oGlobal; // no (), that would declare a function
oGlobal.oPlayer.showVars();
基本上,我有一个全局 class 和一个播放器 class。它们都在它们的 ObjPlayer.h/ObjPlayer.cpp 中定义,对于全局也是一样的。但是如何在 ObjGlobal 中转发声明 ObjPlayer 的实例?
这是我的:(定义构造函数,class 减速在别处。)
//Create all the objects
GlobalClass::GlobalClass(void)
{
//Create a player for testing
ObjPlayer oPlayer(4, 8);
}
但由于它在构造函数中,我认为我无法像在主函数中那样访问 class。
int main()
{
GlobalClass oGlobal();
oGlobal.oPlayer.showVars(); //Doesn't work...
system("PAUSE");
return 0;
}
(我知道我不应该使用系统,它只是为了调试。)
我很困惑,我不知道如何解决这个问题。 (我对 C++ 很菜鸟,我的主要语言是 GML...)
非常感谢对此问题的任何帮助。
在 ob 全局头文件中,在 class 声明之前 ad:
class oPlayer;
您正在构造函数中创建和销毁局部变量,而不是 class 成员。构造函数完成后,它不再存在,因此无法从外部访问它。
class 成员需要在 class:
中声明class GlobalClass {
//...
ObjPlayer oPlayer;
//...
};
可由构造函数初始化:
GlobalClass::GlobalClass() : oPlayer(4,8) {}
并且(如果 public)按您的需要访问:
GlobalClass oGlobal; // no (), that would declare a function
oGlobal.oPlayer.showVars();