【发布时间】:2014-08-08 06:26:29
【问题描述】:
所以,我试图在我的 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;
}
}
我什至不确定这段代码是否正确,因为我现在创建它只是为了显示我想要做什么。
所以,基本上,我想做的是在“屏幕”中为“游戏”创建一个引用,这样我就可以使用它的属性和方法(在本例中为屏幕宽度),即使正在实例化“屏幕”在“游戏”里面。我在 Java 中做了类似的事情并且效果很好,但是对于 C++,我得到了很多错误,我什至不知道如何解释它们......我尝试使用指针作为参数,而不是使用“this”我试过使用“&this”,但它们都不起作用,我得到了几乎相同的错误......
那么,我做错了什么?我怎样才能使这项工作?这在 C++ 中是否可行?
【问题讨论】:
-
您的构造函数按值获取参数,但您传递的是一个指针。看起来您希望通过引用来获取论点,如您的帖子中所述。
-
如果您想要参考,请使用参考。
Screen(Game& game);或更好:Screen(const Game& game); -
您在执行此操作时可能应该read this。有些事情告诉我你会想知道为什么当你为
Game添加析构函数时事情会崩溃 -
@WhozCraig:或者,使用 C++11,The Rule of Zero
-
@CaptainObvlious 但是,如果我使用
Game &game,我将只能将其用作该函数(在本例中为构造函数)的参考,不是吗?但是,如果我想在另一个函数中使用相同的引用,Game没有调用,但是使用与Game调用相同的Screen对象的完全不同的类怎么办?或者即使Game是调用该函数的那个,假设我在Screen中有 100 个方法,每个方法使用来自Game的 100 个属性,我必须将每个属性作为参数传递给每个方法?
标签: c++ class object parameters