ubuntu下面C++编译的问题:atexit不是std的成员
我们项目中有一个用qt做的GUI程序,在ubuntu下面我碰到了如下的编译错误:
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_NO_KEYWORDS -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/opt/qtsdk-2009.02/qt/mkspecs/linux-g++ -I. -I/opt/qtsdk-2009.02/qt/include/QtCore -I/opt/qtsdk-2009.02/qt/include/QtGui -I/opt/qtsdk-2009.02/qt/include/QtSql -I/opt/qtsdk-2009.02/qt/include -I. -I. -I. -o main.o main.C
In file included from OptionRegister.h:15,
from InputDialog.h:16,
from main.C:35:
Register.h: In static member function ‘static QChem::Register<K, T>& QChem::Register<K, T>::instance()’:
Register.h:28: 错误: ‘atexit’不是‘std’的成员
make: *** [main.o] 错误 1
其中,Register.h的相关代码是这样的:
#include <map>
namespace QChem {
template <class K, class T>
class Register {
public:
static Register& instance() {
if (s_instance == 0) {
s_instance = new Register();
::std::atexit(Register::destroy);
}
return *s_instance;
}
其中28行就是指 ::std::atexit(Register::destroy)这一行。
请教大家,怎样修正这个编译错误?非常感谢!!!