Class 中的结构在数组中使用 class 时出现错误

Struct in Class brings up error when class is used in array

在尝试创建我的 class 的数组时出现错误,因此我开始删除 class 中的变量。我发现删除所有名为 vector2 的结构,编译器将能够创建一个 class 的数组。我不知道为什么它不起作用,或者为什么结构会影响它。

#include <iostream>
using namespace std;

struct vector2
{
    double x = 0, y = 0;
    vector2(double doubleX, double doubleY)
    {
        x = doubleX;
        y = doubleY;
    }
};

class Dog
{
    private:
        vector2 location;
        int age;

    public:
        void setLocation(vector2);
        vector2 getLocation();

        void setAge(int);
        int getAge();

};
void Dog::setLocation(vector2 newLocation)
{
    location = newLocation;
}
vector2 Dog::getLocation()
{
    return location;
}

void Dog::setAge(int newAge)
{
    age = newAge;
}
int Dog::getAge()
{
    return age;
}

int main() 
{
    Dog myDogs[1];
    myDogs[0].setAge(10);
    return 0;
}

顺便说一句:我注意到一些 vector2 代码不起作用,但我已经使用 std::vector 尝试了这个,并且它完美地工作(使用构造函数)

你的 Dog 有一个 vector2 成员变量,但是 vector2 没有默认构造函数。而且您没有使用 vector2 的参数化构造函数的 Dog 构造函数。

要么给vector2一个默认构造函数

vector2::vector2() : x{0.0}, y{0.0} {}

或者 Dog 的构造函数使用 vector2

的参数化构造函数
Dog::Dog(int _age) : age{_age}, location{0.0, 0.0} {}