C++传递一个对象

C++ passing an object

本文关键字:一个对象 C++      更新时间:2023-10-16

我目前正在学习C++,但它并不像我预期的那样工作。我为保龄球比赛做了一些课程(只是一些基于文本的课程(,效果很好。但现在我想把保龄球游戏的一个对象传给另一个类,叫做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;我在网上查了一些例子,但找不到解决方案。

您的问题是没有分配指针。为什么不在标题中将"游戏"定义为BowlingGame game;?这样,您的其他代码就可以正常工作了。这意味着保龄球游戏的结构被"复制"到课堂上的结构中,但这听起来就是你想要的。

//* game = gamse; this fails

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

像这个吗

game = new Game(gamse);

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

另外,如果你不再需要delete游戏,不要忘记在你的析构函数或更早的时候使用它。或者最好使用智能指针进行"游戏"。

相关文章: