2015-03-07 5 views
-1

Так что в основном у меня есть глобальный класс и класс игрока. Они оба определены в их ObjPlayer.h/ObjPlayer.cpp и одинаковы для глобального. Но как мне передать объявление ObjPlayer в ObjGlobal?Как переслать объявление объекта в классе? (C++)

Вот что у меня есть: (Определение конструктора, класс замедления в другом месте.)

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

Но поскольку в застройщик, я не думаю, что я могу получить доступ к классу как в основная функция.

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

    system("PAUSE"); 
    return 0; 
} 

(я знаю, что я не должен использовать систему, это только для отладки.)

Я совершенно запутался, и я не знаю, как решить эту проблему. (Я довольно noobish с C++, мой основной язык - GML ...)

Любая помощь с этой проблемой очень ценится.

+3

Что вы подразумеваете под «прямым объявлением» объекта внутри класса? Это не имеет особого смысла в C++. – juanchopanza

+0

Вам нужно сделать oPlayer членом GlobalClass. Либо публичный, либо частный с геттером. – tux3

ответ

0

Вы создаете и уничтожая локальную переменную в конструкторе, а не члена класса. Как только конструктор закончен, он больше не существует, поэтому нет доступа к нему извне.

член класса должен быть объявлен в классе:

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

, которые могут быть инициализированы с помощью конструктора:

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

и (если публика) доступ, как вы хотите:

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

в головном файле objGlobal, перед declerations класса добавить:

class oPlayer;