При попытке создать массив моего класса я получал ошибку, поэтому я начал удалять переменные в классе. Я обнаружил, что удаление всех структур с именем vector2
, компилятор сможет создать массив класса. Я не знаю, почему это не работает, или почему структура повлияет на него.Struct in 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;
}
BTW: Я заметил, что некоторые из vector2
кода не работает, но я попытался это с помощью std::vector
, и она прекрасно работает (с конструктором)
'vector2' не имеет конструктор по умолчанию: например, вы не можете писать 'vector2 v;', только 'vector2 v (1, 2);' из-за этого компилятор не может создать конструктор по умолчанию для 'Dog'. –
@IgorTandetnik Как я могу это исправить? Это не позволит мне делать 'vector2 location (0,0)' или 'vector2 location (vector2 (0,0));' в классе 'Dog' – Orfby
@Orfby См. Мой ответ ниже, это два из ваших вариантов (их больше) – CoryKramer