C ++将对象放在数组中

时间:2017-01-06 06:19:15

标签: c++ visual-studio-2015

尝试将对象放入数组列表并弹出 3错误。我查看了论坛,并且question与我的相似,但我不认为它适用于我的情况。 这是我的代码:

在test.cpp(主文件)中

#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;

}
在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;
}
int House::GetHouseHealth() {
    return Health;
}
string House::GetHouseName() {
    string returning = Name;
    return returning;
}
House::~House()
{
}

在House.h中

#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();
};

错误:

  1. 错误C2512&#39; House&#39;:第9行没有合适的默认构造函数test.cpp
  2. 错误C3867&#39; House :: GetHouseName&#39;:非标准语法;使用&#39;&amp;&#39;至 创建一个指针 第16行的成员test.cpp
  3. 错误C2679二进制&#39; =&#39;:找不到右侧的操作符 类型的操作数&#39;重载函数&#39; (或者没有可接受的 转换)test.cpp在第16行

1 个答案:

答案 0 :(得分:0)

  1. 如果要创建这样的数组,则需要一个默认构造函数:template-url编译器需要知道如何创建一个空House HouseArray[2];,以便初始化初始化数组。因此在House.h中添加如下内容 House

  2. 要在类上调用函数,需要添加大括号: House() { Name = ""; Health = 0; }

  3. 我怀疑上述内容也可以解决这个问题。