![](/img/trans.png)
[英]Abstract class : invalid abstract return type for member function ‘virtual…’
[英]Abstract class accessing the implemented type through a templated virtual function?
我想知道是否有任何方法可以在抽象 class 中编写模板 function,并使用派生的 class 的类型自动实例化它(模板函数)?
所以你有一个看起来像这样的 class
class A
{
virtual template < typename T>
void vtfunc(void)
};
class B : public A
{
/// No declared members pertaining to this example
}
然后,每当声明从 A 派生的 class 时,它就会以自身作为模板参数 T 来编译“vtfunc”。然后,通过 A 的接口调用 vtfunc() 调用为其派生的 ZA2F22ED4F8EBC14ZDC4 编译的 functionDC4 的实例。
有没有办法做到这一点,或者写一些有这种效果的东西?
显然我知道模板参数只能影响 class 的内部,而不是返回类型和参数——由于多态性的工作方式,它们需要相同。
我不确定你在追求什么,但一种常见的模式是所谓的奇怪重复的模板模式; 在这里,基础 class 本身是模板,而不是它的成员函数。 换句话说:
template <typename T>
class A
{
virtual void vtfunc(void)
};
class B : public A<B>
{
…
};
考虑改用非成员 function。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.