gpt4 book ai didi

c++ - 使用抽象类的子类专门化模板

转载 作者:太空宇宙 更新时间:2023-11-04 14:48:33 24 4
gpt4 key购买 nike

我遇到了以下问题:

我有一个带有模板 T 的类 Test。当我创建此类的对象时,专门针对其他普通类,一切正常。在 Test 类的构造函数中有一行代码创建了模板类的对象;

但是当我尝试实例化此类 (Test) 时,使用抽象类 (Dummy) 的子类 (SubDummy) 对其进行专门化), 我得到一个错误:无法实例化一个抽象类。

示例代码(针对本文目的进行了简化):

class Dummy
{
private:
virtual void _nothing() = 0; // this makes the class abstract
};

class SubDummy : public Dummy
{
public:
SubDummy() :
Dummy()
{
}
};

template <class T>
class Test
{
public:
Test()
{
T t; // here the compiler reports the error
}
};

int main()
{
Test<SubDummy> x;
}

最佳答案

包含纯虚成员函数的类根本无法实例化。由于您没有在 SubDummy 中为 _nothing 指定覆盖,因此它在此类中也是纯虚拟的。您必须在 SubDummy 中实现 _nothing 才能使其正常工作。

关于c++ - 使用抽象类的子类专门化模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27567563/

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