[英]virtual destructor?
收到一些错误,它是具有非虚拟析构函数的虚拟函数。 我该如何解决此错误? 它在g ++ 4.6.x中工作,但是我需要它在较旧版本的g ++中工作。 :(
#include <list>
template <typename T>
class container{
public:
~queue(){
queuel.clear();
queuel.~list();
}
virtual T func_x(){
T temp;
//do stuff with list<t> test
return temp;
}
private:
std::list<T> test;
};
template <typename T>
class container2 : public container<T>{
public:
virtual T func_x(){
T temp;
//do different stuff with list<T> test
return temp;
}
};
编辑:@Als有一点,析构函数也被错误地命名为您的类。 更新的答案。
问题只是g ++认为,由于类中有虚方法,因此应该有虚析构函数。 这与如果继承一个类并对其进行扩展有关,则可以分配基类析构函数不知道要清理的内存或其他资源,并且如果析构函数不是虚拟的,则可以调用基类的析构函数在某些情况下,而不是真正的析构函数。
经验法则是,如果您的类中有虚拟方法,请使用虚拟析构函数。 删除名称错误的析构函数〜queue并放入
virtual ~container();
在类声明中添加并在.cpp文件中添加析构函数应该可以解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.