C++:使用模板化类来实现抽象类
C++: Using a templated class to implement an abstract class
我有一个接口,正试图让我的模板化类实现这个接口。演示该问题的一个简单示例是:
class Base{
virtual void do_something(int a) = 0;
virtual ~Base();
};
template<typename T>
class Concrete : Base{
T _t;
Concrete(T t):_t(t){};
virtual void do_something(int a);
};
template<typename T>
virtual void Concrete<T>::do_something(int a){
std::cout << a << std::endl;
}
int main(int argc, char **argv) {
Concrete<int> c;
c.do_something(5);
}
然而编译器抱怨道:
error: templates may not be 'virtual'
virtual void Concrete<T>::do_something(int a){
有没有办法实现这种行为?
so.cpp:19:1: error: 'virtual' can only be specified inside the class definition
virtual void Concrete<T>::do_something(int a){
^~~~~~~~
删除虚拟关键字(将其写入类定义中就足够了/唯一正确的方法)。
您的代码还有一些其他问题(~Base()
没有定义,Concrete()
需要一个参数),但您询问的问题可以通过简单地删除错误的virtual
来解决。
相关文章:
- C++ 多重继承:使用基类 A 的实现实现基类 B 的抽象方法
- 使用抽象类的类和实现此抽象类的创建对象
- GMock - 用另一个实现模拟抽象类
- 确保派生的类实现至少是来自抽象类(C )的两种方法之一
- 有没有办法实现从 c++ 中其他抽象类多重继承的抽象类?
- 在C 抽象类中实现回调(对于C库)为纯虚拟
- C++迭代器:抽象类的迭代器可以作为嵌套类实现吗
- 如何创建抽象类的内联实现
- c++抽象类在另一个基类中的实现
- 不带模板参数的抽象类的实现
- Vector使用抽象类C++实现的优先级队列
- 类中的多态函数,实现抽象类
- 是否可以在C++/CLR中实现一个用C#声明的抽象类
- 在C++中实现简单的Java程序(抽象类)
- C++ 抽象类是否应该为(虚拟)析构函数提供实现
- 从继承的类中实现抽象方法
- 如何正确实现抽象类
- C++:使用模板化类来实现抽象类
- 在父类中实现抽象类成员
- 如何在c++中实现抽象类,同时允许子类方法调用