@sinoptis

Наследование от чисто абстрактного класса. Не инклюдиться?

#pragma once
#include "Vector.h"
class AbstractFigure
{
public:
	virtual void Scale() = 0;
	virtual void Rotate() = 0;
	virtual void Move(Vector direction) = 0;
};


#pragma once
#include "AbstractFigure.h"
class Point :
	public AbstractFigure
{
public:
	Point();
	~Point();

	// Inherited via AbstractFigure
	virtual void Scale() override;
	virtual void Rotate() override;
	virtual void Move(Vector direction) override;
};


#pragma once
#include "AbstractFigure.h"
class Vector :
	public AbstractFigure
{
public:
	Vector();
	~Vector();

	// Inherited via AbstractFigure
	virtual void Scale() override;
	virtual void Rotate() override;
	virtual void Move(Vector direction) override;
};


Ошибки C2504 'AbstractFigure': base class undefined
  • Вопрос задан
  • 169 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
#pragma once
#include "Vector.h"
class AbstractFigure
...
#pragma once
#include "AbstractFigure.h"
class Vector :
public AbstractFigure
...

Нет, не инклудится. Потому что либо AbstractFigure.h первый, либо Vector.h, кому-то не повезёт.
Можно пофиксить например так:
#pragma once
class Vector;
class AbstractFigure
{
public:
  virtual void Scale() = 0;
  virtual void Rotate() = 0;
  virtual void Move(const Vector& direction) = 0;
};
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы