如何将同一个对象传递给另一个对象的另一个方法?

时间:2015-11-07 05:39:09

标签: c++ object

假设我有一个Game类型的对象在某个地方实例化,我有另一个名为Writer的类,我想保存它....

所以在我Writer上课......

void gameWriter(Game g) {
  some wonderful logic here....

}

Game内,我想调用gameWriter ...所以我有一个像这样的方法(在Game内)

void Game::saveGameDetails() {

    Writer w;
    w.gameWriter(this);  //this is where it fails...

}

如何使用我目前使用的同一个对象在gameWriter内拨打Game

3 个答案:

答案 0 :(得分:1)

要在语法上正确,您需要使用:

w.gameWriter(*this);

我会进一步建议在Game const&中使用Game&gameWriter作为参数类型。

void gameWriter(Game const& g) { ... }

然后,您将节省创建Game

副本的费用

答案 1 :(得分:0)

它失败是因为你根据this的签名传递指针gameWriter,它期望对象本身。试试这个

void Game::saveGameDetails()
{
    Writer w;
    w.gameWriter(*this);  
}

答案 2 :(得分:0)

不确定这是否有效,但尝试将Writer()声明为静态类。然后,你不需要在你的Game实例中实例化它,只需调用Writer.Save(this);

我建议这是因为我猜测当你将一个游戏实例传递给gameWriter()的实例时会发生错误,但由于w在游戏中,所以事情可能会变得奇怪。