我想在程序结束之前调用实例(proc)的析构函数,特别是在main中返回1或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;
}
Run Code Online (Sandbox Code Playgroud)
proc有自动持续时间,即退出时main,它将被自动销毁(并调用析构函数) - 你不需要atexit业务..
除非@Rob在下面提到,否则你exit()在代码中调用...如果是这种情况,那么你必须Process在堆上分配,提供一个atexit可以调用哪个知道这个实例的函数,并在那里删除它. ..