我想创建一个基类,它将被其他对象继承,以便它们可以存储在同一个容器中。该基类将包含一个模板化方法,该方法将函数定义为用于访问多线程系统中的缓冲区的 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/