我有一个模板类的层次结构,它们在一个地方构建并传递到其他地方以对它们进行一些操作。
例如,一个类可以被模板化为一些复杂的对象,该对象知道如何将自己转换为双精度,并且模板化的类具有将这个对象作为双精度输出的操作。效用函数的一个示例是将此类的集合输出为表的函数。
但是,我不想将这种类型作为模板类传递,因为实用程序函数应该适用于任何具体的类变体,因为它们都可以将自己表示为 double。因此,我想要一些具有“表示为双重”功能的非模板化界面。为什么以下不起作用?
#include "stdafx.h"
class Interface1
{
public:
virtual int ReturnSomeInt();
};
template<typename myType>
class TClass1 : public Interface1
{
public:
int ReturnSomeInt() {return 5;}
void CalculateSomething(myType myValue) {}
TClass1() {}
};
//---------------------------------------------
class Interface2 : public Interface1
{
public:
virtual double ReturnSomeDouble();
};
template<typename myType>
class TClass2 : public TClass1<myType>, public Interface2
{
public:
double ReturnSomeDouble() {return 9.2;}
void CalculateSomethingElse(myType myValue) {}
TClass2() {}
};
//---------------------------------------------
int _tmain(int argc, _TCHAR* argv[])
{
Interface2 myInterface = TClass2<float>();
int myInt = myInterface.ReturnSomeInt();
double myDouble = myInterface.ReturnSomeDouble();
return 0;
}
我收到关于找不到符号的链接错误 2019 Interface2::ReturnSomeDouble(void)
。可能是什么问题呢?