C++ C++;在阵列中放置对象

C++ C++;在阵列中放置对象,c++,visual-studio-2015,C++,Visual Studio 2015,我正在尝试将对象放置在数组列表中,并弹出3个错误。我查看了论坛,发现有一个类似于我的论坛,但我认为它不适用于我的情况。 这是我的密码: 在test.cpp(主文件)中 #包括 #包括“House.h” 使用名称空间std; 房屋阵列[2]; int main() { 字符串打印; 库博之家(“库博”,2); HouseArray[0]=Kubo; toPrint=HouseArray[0]。GetHouseName; 库特 如果要创建这样的数组,您需要一个默认构造函数:House-HouseAr

我正在尝试将对象放置在数组列表中,并弹出3个错误。我查看了论坛,发现有一个类似于我的论坛,但我认为它不适用于我的情况。 这是我的密码:

在test.cpp(主文件)中

#包括
#包括“House.h”
使用名称空间std;
房屋阵列[2];
int main()
{
字符串打印;
库博之家(“库博”,2);
HouseArray[0]=Kubo;
toPrint=HouseArray[0]。GetHouseName;
库特
  • 如果要创建这样的数组,您需要一个默认构造函数:
    House-HouseArray[2];
    编译器需要知道如何创建一个空的
    House
    ,以便初始化初始数组
    
    众议院(){
    Name=“”;
    健康=0;
    }
    

  • 要在类上调用函数,需要添加大括号:
    toPrint=HouseArray[0].GetHouseName();

  • 我怀疑上述措施也能解决这个问题


  • 你想调用
    GetHouseName
    成员函数吗?当你创建一个对象数组时,数组中的元素将被默认构造,你没有默认构造函数。默认构造函数中的
    a
    h
    是什么?数组的元素是值初始化的,因为它有静态存储dur初始化(因为它是在命名空间范围内定义的)。将其作为局部变量可以解决问题。@acraig5075,抱歉,复制代码时忘记修复该部分,现已修复:它应该是一些有效的默认值
    std::string
    已经有默认初始化,执行
    Name=“”;
    #include <iostream>
    #include "House.h"
    using namespace std;
    
    House HouseArray[2];
    
    int main()
    {
        string toPrint;
        House Kubo("Kubo", 2);
        HouseArray[0] = Kubo;
        toPrint = HouseArray[0].GetHouseName;
        cout <<toPrint<< endl;
    
    }
    
    #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;
    }
    int House::GetHouseHealth() {
        return Health;
    }
    string House::GetHouseName() {
        string returning = Name;
        return returning;
    }
    House::~House()
    {
    }
    
    #include <string>
    using namespace std;
    class House
    {
        string Name;
        int Health;
    public:
        House(string a, int h);
        int GetHouseHealth();
        void DamageHouse(int d);
        string GetHouseName();
        ~House();
    };