C++ 如何获取类中的特定对象

C++ How to get a specific object in a class

本文关键字:对象 何获取 获取 C++      更新时间:2023-10-16

我想在C++的类中获取特定对象。我查看了多个网站,似乎我的问题很独特。好的,这是我的代码。

在房子里。

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

在源中.cpp

#include <iostream>
#include "House.h"
using namespace std;
int main()
{
    House Kubo("Bahay Kubo", 2);
    Kubo.DamageHouse(1);
}

我以久保家为我的第一个对象。我想将人的房屋保存到文件中,但我的问题是如何将对象的名称传递到函数中,以便将其数据保存到文件中?我可以手动放置久保并这样做

PlayerHouse = Kubo.Name;

但是,如果我不知道应该保存哪所房子怎么办?喜欢而不是打字

PlayerHouse = Apartment.Name;//2nd house
PlayerHouse = Modern.Name;//3rd house

我可以使用函数参数将对象的名称放入玩家之家吗?喜欢这个

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

做到这一点的几种方法..是将所有创建的对象保存在容器中,然后访问容器以获取对象并传递给它一个函数,该函数将其写入文件。

此外,如果您不想维护容器,您提到的有关使用该函数的内容也可以正常工作

当然

,但是如果你无论如何都要保存房子的Name,为什么不首先要求一个std::string,然后将Name传递给那个函数呢?

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

如果这在您的House类之外,则需要创建一个方法来公开HouseName成员,或者只是将其设为public

为了回答您最初的问题,就像如何传递内置类型一样,您可以对House类型执行相同的操作:

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