1

我目前正在学习 C++,但它不像我预期的那样工作。我为 BowlingGame 制作了一些课程(只是一些基于文本的课程),效果很好。但现在我想将 BowlingGame 的对象传递给另一个名为 ScoreCalculator 的类。

头文件如下所示:

#ifndef SCORECALCULATOR_H
#define SCORECALCULATOR_H
#include "BowlingGame.h"

class ScoreCalculator {
private:
    BowlingGame * game;
public:
    //constructor
    ScoreCalculator(const BowlingGame &game);

    //setters
    void setGame(const BowlingGame &game);
};

#endif // SCORECALCULATOR_H

实现看起来像:

#include "ScoreCalculator.h"
#include "BowlingGame.h"
#include <iostream>

using namespace std;

ScoreCalculator::ScoreCalculator(const BowlingGame &game) {
    setGame(game);
}

void ScoreCalculator::setGame(const BowlingGame &gamse) {
    //* game = gamse; this fails
    //cout << gamse.getLastFrameNummer(); this works
}

我想在实例 var 游戏中保存“BowlingGame 对象”,但由于某种原因,我的控制台应用程序崩溃了。我不知道我做错了什么。失败在于规则: * game = gamse;我在互联网上查找了一些示例,但找不到解决方案。

4

2 回答 2

1

您的问题是您没有分配指针。你为什么不在BowlingGame game;标题中定义“游戏”?这样你的其他代码就可以工作了。这将意味着 BowlingGame 结构被“复制”到类中的结构中,但这听起来就是您所追求的。

于 2013-05-04T14:33:45.403 回答
-1
//* game = gamse; this fails

你还没有为game. 它只是一个指针,还没有指向任何有效的东西。您必须创建一个新Game对象以使其指向。

像这样做

game = new Game(gamse);

假设Game有一个可访问的复制构造函数。

delete另外,如果您不再需要它,请不要忘记在您的析构函数或更早的时候进行游戏。或者甚至更好地使用智能指针'game.

于 2013-05-04T14:36:24.407 回答