我是 C++ 新手。这是我第一次使用模板。我想用纯虚函数定义某种接口,但这些函数的返回类型可能会因派生类而异。所以我想到了在抽象类中使用模板。我不确定我所拥有的是否有效。我有类似的东西:
template <class T> class InterfaceClass
{
public:
virtual T function1(const string& value)=0;
virtual T function2(const MyObj& p)=0;
}
这样我就可以继承它并定义一个接口来访问这些功能。
class myClass : public InterfaceClass<MyObj>{
public:
MyObj InterfaceClass::function1(const string& value)
{
MyObj a = parse(value);
}
MyObj InterfaceClass::function2(const MyObj& p)
{
return p;
}
}
目的是我希望能够执行以下操作:
InterfaceClass * pClass;
if(isCertainType())
pClass = new myClass();
else
pClass = new myClass2();
编译器抱怨重新定义了类InterfaceClass
,并且函数成员不能在myClass
. 我现在真的很困惑,想知道这是否可能或者我做错了什么。任何帮助都深表感谢。