[英]C++ passing an object
我目前正在學習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
}
我想將'BowlingGame對象'保存在實例var游戲中,但是由於某些原因,我的控制台應用程序崩潰了。 我不知道我在做什么錯。 失敗是在規則中: * game = gamse;
我在互聯網上查找了一些示例,但找不到解決方案。
這里的問題是您沒有分配指針。 您為什么不將“游戲”定義為BowlingGame game;
在標題中? 這樣,您的其他代碼即可正常工作。 這將意味着BowlingGame結構已“復制”到該類中,但這聽起來就是您所追求的。
//* game = gamse; this fails
你沒有為game
分配任何東西。 它只是一個指針,尚未指向任何有效的指針。 您必須創建一個新的Game
對象以使其指向。
像這樣做
game = new Game(gamse);
假設Game
具有可訪問的副本構造函數。
另外,如果您不再需要delete
游戲,請不要忘記delete
析構函數中的游戲。 甚至最好將智能指針用於游戲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.