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

How can I pass the same object to another method of another object?

本文关键字:一个对象 另一个 方法      更新时间:2023-10-16

假设我在某个地方实例化了一个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...
}

如何使用我当前使用的同一对象在Game中调用gameWriter

为了语法正确,您需要使用:

w.gameWriter(*this);

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

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

然后,您将节省创建Game副本的成本。

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

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

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

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