Я хочу поставить две классы в один файл заголовка. Один базовый класс, а второй выведенно этот базовый класс, что я имею в виду что-то вроде этого:Базовый и производный класс в одном заголовке
class Drawable{
public:
Drawable();
void setPosition(math::Vector3 position);
void draw();
};
class Box: public Drawable{} ;
Но я получаю ошибку «неопределенная ссылка на` Drawable :: Drawable()»». В исходном файле у меня есть:
class Drawable {
public:
math::Vector3 position;
math::Vector3 rotation;
Drawable() {
position = math::Vector3(1.0, 1.0, 1.0);
rotation = math::Vector3(0.0, 0.0, 0.0);
}
void setPosition(math::Vector3 position) {
this->position = position;
}
void draw() {
}
};
class Box: public Drawable {
public:
void draw() {
glBegin(GL_TRIANGLES);
drawPoint(this->position + math::Vector3(1.0f, 1.0f, 1.0f));
drawPoint(this->position + math::Vector3(-1.0f, 1.0f, 1.0f));
drawPoint(this->position + math::Vector3(-1.0f, 1.0f, 1.0f));
drawPoint(this->position + math::Vector3(1.0f, 1.0f, 1.0f));
drawPoint(this->position + math::Vector3(1.0f, 1.0f, -1.0f));
drawPoint(this->position + math::Vector3(1.0f, -1.0f, 1.0f));
glEnd();
}
};
Так что мне кажется, невозможно сделать это, так как образовавшаяся класс в заголовке уже не знает о конструкторе базового класса. Я прав?
Не имеет смысла иметь пустое определение 'draw' в базовом классе и НЕ сделать его' virtual'. –
@KirilKirov Я только что ответил на вопрос, реализация не в моем бизнесе. – HAL
ничья будет виртуальной, это неважно в текущей точке – spectre