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} {}
在尝试创建我的 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} {}