C++传递一个对象
C++ passing an object
我目前正在学习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
游戏,不要忘记在你的析构函数或更早的时候使用它。或者最好使用智能指针进行"游戏"。
相关文章:
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 从多个源构造一个对象,包括一个对象向量
- 为什么C++在将一个对象复制到另一个对象时需要对这两个对象进行低级常量限定
- 检查哪个对象调用了另一个对象的对象方法
- C++ 如何在将新对象分配给另一个对象时创建新对象
- 如何处理从一个对象传递到另一个在C++中具有公共抽象类的对象的消息
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 包装一个对象并假装它是一个 int
- 为什么我可以在不重载 "=" 运算符的情况下将一个对象分配给另一个对象?
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- 如何使用函数将一个对象的输入复制到另一个对象中
- 选择一个元素而不是一个对象的数组的原因
- 为什么我可以使用 memcpy 将一个对象变量复制到另一个对象变量
- 如何将包含另一个对象向量的对象保存到文件中,并使用C++中的二进制文件从文件中读回?
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 打印对象的映射,其中另一个对象作为键
- 如何通过另一个对象中的命令正确地从一个对象返回数据
- 为什么将两个对象分配给另一个对象后,两个对象不一样?
- 绘制一个对象,比较模具缓冲区的两个不同值