【发布时间】:2017-09-28 12:14:16
【问题描述】:
我正在尝试创建一个可用于模板其他类的类。也许我正在寻找错误的关键词。本质上,我希望PrimaryClass 和A 类是纯虚拟的。 DerivedClass 和 C 派生自它们各自的类。 问题是通过调用继承类:C in DerivedClass 我没有覆盖纯虚拟PrimaryClass。我知道这一点,但我不知道如何解决它。
我的印象是,因为C 是从A 派生的,所以它会起作用。
如果我在
C
virtual void DoFunThings ( C<T>* d ) {}
到A 它可以工作,但这样做的目的是允许使用A 的不同派生版本。
template <class T>
class A
{
public:
virtual void FunThings ( const A<T> &orig, A<T>* new_one ) = 0;
T thing{};
};
template <class T>
class C: public A < T >
{
public:
virtual void FunThings ( const C<T> &orig, C<T>* new_one ) {}
};
template <class T>
class PrimaryClass
{
public:
virtual void DoFunThings ( A<T>* d ) = 0;
};
template<class T>
class DerivedClass: public PrimaryClass<T>
{
public:
virtual void DoFunThings ( C<T>* d ) {}
};
int main ()
{
DerivedClass<int> derived;
return 0;
}
如果无法做到这一点,如何才能编写具有我想要的功能的通用面向对象代码?
【问题讨论】:
标签: c++ inheritance derived-class generic-programming