簡體   English   中英

C ++傳遞對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM