繁体   English   中英

抽象 class 通过模板化虚拟 function 访问实现的类型?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM