2017-01-05 12 views
0

C++のクラスで特定のオブジェクトを取得したいとします。私は複数のサイトを見て、それは私の質問が一意だと思われる。さて、ここに私のコードです。 C++クラス内の特定のオブジェクトを取得する方法

#include <iostream> 
#include "House.h" 
using namespace std; 

int main() 
{ 
    House Kubo("Bahay Kubo", 2); 
    Kubo.DamageHouse(1); 

} 

Source.cpp

でHouse.cpp

#include "House.h" 
#include <iostream> 

House::House(string a, int h) 
{ 
    Name = a; 
    Health = h; 
} 
void House::DamageHouse(int d) { 
Health -= d; 
cout << "Your " << Name << " has " << Health << " left."<<endl; 
} 
void House::GetHouseStats() { 
    cout << Name<<endl; 
    cout << Health; 
} 
House::~House() 
{ 
} 

でHouse.h

#include <string> 
using namespace std; 
class House 
{ 
    string Name; 
    int Health; 
public: 
    House(string a, int h); 
    void GetHouseStats(); 
    void DamageHouse(int d); 
    ~House(); 
}; 

私は私の第一の目的として、ハウス久保を持っています。その人の家をファイルに保存したいのですが、私の問題はです。データをファイルに保存するには、オブジェクトの名前を関数に渡すにはどうしたらいいですか?私は手動で久保を配置し、

PlayerHouse = Kubo.Name; 

としてそうしかし、私は保存する必要のある家は何を知っていない場合はできますか? Likeの代わりに入力する

関数の引数を使用してPlayerHouseにオブジェクトの名前を配置できますか?もちろんこの

void SetHouseName(type object){ 
    PlayerHouse = object.Name; 
} 

答えて

1

いくつかの方法..を保っています作成されたすべてのオブジェクトをコンテナに格納し、コンテナにアクセスしてオブジェクトを取得し、それをファイルに書き込む関数を渡します。あなたはOPのオブジェクト名またはの `name`のメンバーについて話しているかどうかわからない、実際にあなたも罰金

0

似ていますが、とにかく家のNameを保存しようとしている場合は、なぜあなたはちょうど最初の場所でstd::stringをお願いし、その関数にNameを渡しませんか?これはあなたのHouseクラスの外にある場合

void SetHouseName(std::string name) 
{ 
    PlayerHouse = name; 
} 

あなたはしかしHouseNameメンバーを公開する方法を作成するか、単にそれpublicようにする必要があります。あなたは組み込み型渡すだろうか、あなたはHouseタイプに同じことを行うことができます同じように、あなたの最初の質問に答えるために

:これを行うことが可能な

void SetHouseName(House house) 
{ 
    PlayerHouse = house.Name; 
} 
+0

えに動作します機能を使用することについて言及しているものの容器を、維持したくない場合にも

クラス「ハウス」、メー。 –

+0

Tbh私のクラスのオブジェクトにはパブリック変数を持たせたくありません。なぜならスクリプトのどこかで私の関数のいくつかが誤って変数を編集できるからです。 – CraftedGaming

+0

それから 'GetName()const'メソッドを取得してください。 –

関連する問題