Я работаю над рисованием фигур с помощью строк на C ++. Итак, я написал класс Shapes, который служит базовым классом для двух производных классов: Diamond и Square. Моя виртуальная функция void setStars () в основном хранит координаты точек фигуры, которую я собираюсь распечатать на доске строк. Тем не менее, эта функция связана с проблемой LNK 2019, и я понятия не имею, почему. Это мой код для базового класса.
#ifndef _SHAPE_
#define _SHAPE_
#include <utility>
#include <vector>
class Shape {
protected:
int x, y, sz;//x-coordinate, y-coordinate, size of Shape
public:
std::vector<std::pair<int, int>> listOfPoints;
Shape(int xPos, int yPos, int size) : x(xPos), y(yPos), sz(size) { setStars(); }
virtual void setStars() = 0;
void moveBy(int xMove, int yMove) {
x += xMove;
y += yMove;
setStars();
}
void setSize(int size) {
sz = size;
setStars();
}
virtual ~Shape() = default;
};
#endif
Функция setStars () определена в других производных классах. Но я получаю такую ошибку:
unresolved external symbol "public: virtual void __thiscall Shape::setStars(void)" (?setStars@Shape@@UAEXXZ) referenced in function "public: __thiscall Shape::Shape(int,int,int)" (??0Shape@@QAE@HHH@Z)
Может кто-нибудь объяснить мне, что не так?