class TsDatabasePool
{
private:
    TsDatabasePool(int numDBConn, std::string& DBName, std::string& DBType);
            static  TsDatabasePool* objInst_;
public:
           ~TsDatabasePool();
    QSqlDatabase* borrowFromPool();
    void returnToPool(QSqlDatabase*);
static bool createInstance(std::string& DBName, std::string& DBType);
static TsDatabasePool* getInstance();

};

我的析构函数没有被隐式调用。 objInst_使用的对象实例是在私有(private)构造函数中分配的。我不想在任何现有函数中调用析构函数或调用delete objInst_。谁能告诉我该怎么办

最佳答案

我相信您要在此处执行的操作是销毁单个对象。
在单线程环境中,可以按以下步骤进行操作:

void TsDatabasePool::Destroy()
{
    if (objInst_)
    {
        delete objInst_;
        objInst_= 0x0;
    }
}

理想情况下,您可以使用诸如shared_ptr之类的方法来确保对象一直存在,直到没有人需要它为止。

07-24 09:45