【发布时间】:2019-12-03 16:39:12
【问题描述】:
当我尝试编译以下代码时:
class A {
public:
A();
~A();
};
class B : A {
private:
using A::A;
using A::~A;
};
我收到以下编译器错误消息:
error: 'A::~A' names destructor
为什么会这样?
我想这样做的更大原因是能够使用模板来创建一个容器,该容器理论上可以通过容器
如果在 C++ 中有更好的方法,请告诉我。
【问题讨论】:
-
你不能继承析构函数。除非您手动进行某种资源获取,否则您永远不需要编写析构函数。
-
C++ 提供
std::vector、std::shared_ptr和(如果需要)std::enable_shared_from_this。这些不能用来解决问题吗? -
内森奥利弗:好的;我想这是一个公平的假设,一旦我获得更多的编码经验。谢谢。 Elijay:Vector 只允许你存储一种类型的对象,但我希望能够灵活地存储更多。我还没有听说过其他功能,但我认为我现在已经足够了。谢谢。
标签: c++ templates inheritance