c++ - 使用模板函数继承类

标签 c++ templates inheritance

我想创建一个基类,它将被其他对象继承,以便它们可以存储在同一个容器中。该基类将包含一个模板化方法,该方法将函数定义为用于访问多线程系统中的缓冲区的 setter 或 getter。我想做一些像这个人所做的事情,但不确定如何实现 Linky .此外,我希望能够使基类中的函数成为虚拟函数,并在派生类中定义功能,我知道你实际上不能拥有虚拟模板函数,但有没有办法以某种方式对其进行编码它的作用类似于虚拟模板函数的概念。下面是一个关于我希望布局如何的粗略示例。通过回调调用 do_work 方法。回调作为参数传递给线程。

class A {
    template<typename R, typename P>
    virtual R do_work(P param) = 0;
}

class B : public A {
    template<void,int> // declare as setter
    R do_work(P param){/*do something*/ return R;}

}

class C : public A {
    template<int,void> // declare as getter
    R do_work(P param){/*do something*/ return R;}

}

最佳答案

您似乎对 A 是 A 类中 do_work 的模板参数有疑问:这实际上没有意义。

R 未在 B 或 C 中的任何地方定义,您的特化语法错误​​。

do_work 不会是多态的,因为它不是虚拟的,所以如果你有一组 A 指针,它只会调用 A 版本,而不会调用 B 或 C 版本,即使它们更匹配。

关于c++ - 使用模板函数继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3969196/

相关文章:

c++ - 添加到整数对 vector 和字符串 vector 的元素在函数返回时被清除

c++ - 构造 vector C++ 后无法释放指针

c++ - QGraphicsEllipseItem 不可移动

css - 模板不加载静态文件

c# - 测量类型之间的关系继承距离

java - 为什么不能在通用 catch 子句中捕获自定义异常

c++ - 将文本文件读入双向链表并输出 - C++

javascript - ng-view 未填充模板

c++ - 为 X 的任何子类专门化类模板,而不向模板添加额外的类型参数

c# - 继承 - 目标特定的继承类 C#