gpt4 book ai didi

c++ - 抽象类通过模板化虚函数访问实现的类型?

转载 作者:行者123 更新时间:2023-11-30 03:06:50 25 4
gpt4 key购买 nike

我想知道是否有任何方法可以在抽象类中编写模板函数,并使用派生类的类型自动实例化它(模板函数)?

所以你有一个看起来像这样的类

class A
{
virtual template < typename T>
void vtfunc(void)
};
class B : public A
{
/// No declared members pertaining to this example
}

然后,每当声明从 A 派生的类时,它都会编译“vtfunc”并将其自身作为模板参数 T。然后,通过 A 的接口(interface)调用 vtfunc() 调用为其派生类 B 编译的函数的实例。

有没有办法做到这一点,或者写一些有这种效果的东西?

显然,我知道模板参数只能影响类的内部结构,而不会影响返回类型和参数 - 由于多态性的工作方式,它们需要相同。

最佳答案

我不确定您在寻找什么,但一种常见的模式是所谓的 curiously recurring template pattern ;在这里,基类本身就是模板,而不是它的成员函数。换句话说:

template <typename T>
class A
{
virtual void vtfunc(void)
};

class B : public A<B>
{

};

关于c++ - 抽象类通过模板化虚函数访问实现的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6254915/

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