gpt4 book ai didi

C++:使用模板化类实现抽象类

转载 作者:行者123 更新时间:2023-11-27 23:03:15 24 4
gpt4 key购买 nike

我有一个接口(interface),我正在尝试让我的模板化类实现这个接口(interface)。演示该问题的一个简单示例是:

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){

有没有办法实现这种行为?

最佳答案

是的,什么 n.m.说。 Clang 的错误消息在这里更有用:

so.cpp:19:1: error: 'virtual' can only be specified inside the class definition
virtual void Concrete<T>::do_something(int a){
^~~~~~~~

去掉virtual关键字(写在类定义里面就够了/唯一正确的方法)。

您的代码还有一些其他问题(~Base() 未定义,Concrete() 需要一个参数),但您询问的问题已通过以下方式解决只需删除错误的 virtual

关于C++:使用模板化类实现抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com