如何在类中转发声明对象? (C ++)

时间:2015-03-07 16:44:34

标签: c++ class forward-declaration

基本上,我有一个全局类和一个玩家类。它们都在它们的ObjPlayer.h / ObjPlayer.cpp中定义,对于全局也是如此。但是如何在ObjGlobal中转发声明ObjPlayer的实例?

这就是我所拥有的:(定义构造函数,类减速在其他地方。)

//Create all the objects
GlobalClass::GlobalClass(void)
{
    //Create a player for testing
    ObjPlayer oPlayer(4, 8);
}

但是因为它在构造函数中,所以我认为我不能像在main函数中那样访问类。

int main()
{
    GlobalClass oGlobal();
    oGlobal.oPlayer.showVars(); //Doesn't work...

    system("PAUSE");
    return 0;
}

(我知道我不应该使用系统,它只是用于调试。)

我很困惑,我不知道如何解决这个问题。 (我对C ++很苛刻,我的主要语言是GML ...)

非常感谢您对此问题的任何帮助。

2 个答案:

答案 0 :(得分:0)

您正在构造函数中创建和销毁局部变量,而不是类成员。一旦构造函数完成,它就不再存在,因此无法从外部访问它。

需要在类中声明类成员:

class GlobalClass {
    //...
    ObjPlayer oPlayer;
    //...
};

可以由构造函数初始化:

GlobalClass::GlobalClass() : oPlayer(4,8) {}

和(如果公开)按您的意愿访问:

GlobalClass oGlobal;   // no (), that would declare a function
oGlobal.oPlayer.showVars();

答案 1 :(得分:-1)

在ob Global头文件中,在类声明之前添加:

class oPlayer;