2017-11-27 14 views
-2

私はそのポイントのベクトルをオブジェクトにしたい(クラス名はScoreKeeperです。私の目標はプレーヤーの名前とスコアを格納してファイルに書き込むことです。オブジェクトのデータメンバにアクセスします。ここに私のコードです。 オブジェクトへのベクトルのポインタ

は「std_lib_facilities_5.h」

class ScoreKeeper { 

public: 

    // Variables 
    int Score; 
    string Name; 

    // Functions 
    void SetScore(int number) 
    { 
     Score = number; 
     return; 
    } 
    void SetName(string name) 
    { 
     Name = name; 
     return;; 
    } 

    ScoreKeeper(int nn = 0, string ss =" "): Score(nn), Name(ss){}     // Constructor 
    ~ScoreKeeper() {};                // Destructor 
    friend ostream& operator<< (ostream &out, const ScoreKeeper &player); 

}; 
//---------------------------------------------------------------------------------- 
ostream& operator<<(ostream& os, const ScoreKeeper& player){ 
    os << player.Name << " " << player.Score; 
    return os; 
} 
//---------------------------------------------------------------------------------- 

int main() { 

    vector<ScoreKeeper*> Players; 

    ScoreKeeper Player1 = new ScoreKeeper; 
    ScoreKeeper Player2 = new ScoreKeeper; 

    Player1->SetScore(300); 
    Player1->SetName("Pape"); 

    Player2->SetScore(200); 
    Player2->SetName("Yamadou"); 

    Players.push_back(Player1); 
    Players.push_back(Player1); 

    //-------------------------------------------------------------------------------- 

    for(int i = 0; i < 2; ++i){ 
     cout << "Player: " << Players[i]->Name << " " << Players[i]->Score << endl; 
    } 
    //-------------------------------------------------------------------------------- 

    ofstream ost {"mydata.txt"}; 

    if(!ost) error("can't open output file ", "mydata.txt"); 

    for(int i = 0; i < Players.size(); ++i){ 
     ost << Players[i].Name << " " << Players[i].Score << endl; 
    } 
    ost.close(); 

} 
+0

あなたは特定の問題について質問する必要があります。少なくとも3つの質問がありますが、これは少し曖昧です。 –

+0

ポインタ変数をベクトルに格納していますが、 "。"を使用して変数にアクセスしようとしています。演算子の代わりに - > – kishore

+0

これはかなり不明です、あなたがすでに尋ねているようなことをしているからです。 – molbdnilo

答えて

0

あなたが取得しているエラーが何であるかを言及していないが含まれています。私が見たもの、あなたはベクトルを持っているから、 ScoreKeeperクラスへのポインタを格納するnew演算子はポインタ参照を返し、コードは

0123から変更する必要があります。

ScoreKeeper* Player1 = new ScoreKeeper; 
ScoreKeeper* Player2 = new ScoreKeeper; 

から

ScoreKeeper Player1 = new ScoreKeeper; 
ScoreKeeper Player2 = new ScoreKeeper; 

また、あなたは、ベクターの使用から読んでいるとき、 " - >" "" の代わりに演算子。

関連する問題