我希望始终在程序结束之前调用实例 (proc) 的析构函数,尤其是在return 1之后em> 或 main 中的 exit()。
我找到了C++函数atexit(),但它需要指向没有参数的void函数的指针,因此下面的代码无法编译。 请问我该如何解决?
我的实例的析构函数需要 MySQL 连接。
#include <WinSock.h>
#include <iostream>
#include <cstdio>
#include <stdio.h>
#include <mysql.h>
#include <string>
// Declarations for Mysql DB
using namespace std;
class Process {
public:
~Process();
};
Process::~Process ()
{
// Interaction with DB
}
int main(void)
{
// Join to DB
atexit(proc.~Process); // Call desctructor of instance proc before program ends
Process proc;
// App code
return 0;
}
请您参考如下方法:
proc
具有自动持续时间,即退出 main
时,它将自动销毁(并调用析构函数) - 您不需要 atexit
业务..
除非@Rob 在下面提到,你在代码中的某个地方调用 exit()
...如果是这样的话,那么你必须分配 Process
堆,提供一个 atexit
可以调用的函数,该函数知道该实例,并在那里删除它...