所以,我正在尝试重现我在C ++程序中用Java学到的一件事,而我却无法完成这项工作!
以下是我想要做的一个例子:
class Game{
public:
int screenWidth, screenHeight;
Screen* titleScreen;
void createScreen(){
titleScreen = new Screen(this);
}
}
class Screen{
public:
Game* game;
Rect quad1;
Screen(Game* game){
this->game = game;
quad1.x = game->screenWidth/2;
}
}
我甚至不确定这段代码是否正确,因为我现在创建它只是为了展示我想要做的事情。
所以,基本上,我想要做的是在“Screen”中为“Game”创建一个引用,这样我就可以使用它的属性和方法(在这种情况下,屏幕宽度),即使“Screen”正在被实例化在“游戏”里面。我在Java中做了类似的事情并且它工作得很好,但对于C ++我得到了很多错误,我甚至不知道如何解释它们...我尝试使用指针作为参数而不是使用“this”我试过使用“& this”,但没有一个工作,我得到了同样的错误......
那么,我做错了什么?我怎样才能做到这一点?这在C ++中甚至可能吗?
答案 0 :(得分:0)
使用前向声明并在定义所需内容后定义该函数。
class Screen; // Forward declaration
class Game{
public:
int screenWidth, screenHeight;
Screen * titleScreen;
void createScreen();
}
class Screen{
public:
Game* game;
Rect quad1;
Screen(Game *game){
this->game = game;
quad1.x = game->screenWidth/2;
}
}
// Out-of-line definition.
// This should be declared "inline" if it's in a header file.
void Game::createScreen(){
titleScreen = new Screen(this);
}
答案 1 :(得分:0)