我正处于为学校作业编写一个小型日历库的最后阶段,我遇到了一个意想不到的非常令人困惑的问题; 我引入模板时,我的赋值运算符没有被覆盖!
所以结构如下:我有一个抽象类Date,主要是纯虚函数(包括赋值运算符),然后我有两个子类,Gregorian并Julian实现它的所有功能.最后,我为一个类编写了一个模板Calendar,其中包含今天的日期(以一个Gregorian或一个Julian对象的形式)以及其他一些与这个特定问题无关的东西.
问题是,当尝试设置此成员时,today我得到一个很长的链接器错误:
错误4错误LNK2019:未解析的外部符号"public:virtual class lab2 :: Date&__thiscall lab2 :: Date :: operator =(class lab2 :: Date const&)"(?? 4Date @ lab2 @@ UAEAAV01 @ ABV01 @@ Z)在函数"public:class lab2 :: Gregorian&__thiscall lab2 :: Gregorian :: operator =(class lab2 :: Gregorian const&)"中引用(?? ?? 4Gregorian @ lab2 @@ QAEAAV01 @ ABV01 @@ Z)C:\Users ...\test.obj日历
告诉我它无法
它告诉我operator=在Date课堂上找到这个功能(显然是因为它纯粹是虚拟的).为什么不使用任何被覆盖的?Gregorian::operator=正试图打电话Date::operator=?
这是出现问题的简化代码:
namespace cal_lib { …Run Code Online (Sandbox Code Playgroud)