Я написал простой интерфейс: (ICopyOnOperator.h)
template<typename T>
class ICopyOnOperator {
public:
virtual const T& operator=(const T& other) = 0;
ICopyOnOperator() = default;
ICopyOnOperator(const ICopyOnOperator& other) {
this->operator=((const T&)other);
}
};
Предполагается автоматизировать вызов функции operator=
, когда вызывается конструктор копирования.
В другом классе я получаю из этого: (Vao.h)
class Vao : public ICopyOnOperator<Vao> {
...
public:
virtual const Vao& operator=(const Vao& other) override {
return *this;
}
};
И когда я компилирую свой код, я получаю ошибку «неразрешенный внешний символ».
У вас есть идея, почему (я знаю, что означает сообщение об ошибке, но почему это происходит?) Или как по-другому достичь моей цели?
[EDIT] * * +1010
Чтобы было понятно. Компоновщик не может найти метод ICopyOnOperator<class Vao>::operator=(class rhino::Vao const &)
.
Полное сообщение об ошибке:
1> tester.obj: ошибка LNK2019: неразрешенный внешний символ «public: виртуальный класс rhino :: Vao const & __thiscall rhino :: ICopyOnOperator :: operator = (класс rhino :: Vao const &)» (?? 4? $ ICopyOnOperator @ VVao @ rhino @@@ rhino @@ UAEABVVao @ 1 @ ABV21 @@ Z) ссылка на функцию "public: __thiscall rhino :: ICopyOnOperator :: ICopyOnOperator (класс rhino :: ICopyOnOperator const &)" (?? 0? $ ICopyOnOperator @ VVao @ носорог @@@ носорог @@ QAE @ ABV01 @@ Z) * 1015 *