& quot; Неопределенная ссылка на vtable в строке & quot; в конструкторе

Я получаю сообщение об ошибке, указанное в заголовке. Я пытаюсь построить класс Line, который унаследовал класс Shape. Я получаю ошибку в

Shape(color) {}

выполнение в конструкторе строки.

Заголовочные файлы (форма и линия в одном, цвет в другом)

Shape.h:

#ifndef SHAPE
#define SHAPE

#include "Image.h"class Shape{
private:
Color color;
public:
Shape (const Color & col) : color(col){}
virtual void Draw(Image & figure) const = 0;

};

class Line : public Shape{
public:
Line (int x1, int y1, int x2, int y2, const Color & color);
virtual void Draw(Image & figure) const;

private:
int x1, y1, x2, y2;
};
#endif // SHAPE

Image.h:

struct Color {
Color( unsigned char r, unsigned char g, unsigned char b )
: red( r ), green( g ),     blue( b ) {
}
Color() : red( 0 ), green( 0 ), blue( 0 ) {
}
unsigned char red, green, blue;
};

А вот и Shape.cpp

#include "Shape.h"
Line::Line( int x1, int y1, int x2, int y2, const Color &color )
: x1( x1 )
, x2( x2 )
, y1( y1 )
, y2( y2 )
, Shape(color){
}

0

Решение

структура Color должны быть объявлены до использования в качестве члена Shape,

0

Другие решения

Похоже, что удаление «void» из объявления Draw в классе Line сработало. По какой-то причине

0

По вопросам рекламы [email protected]