请问大家c++中,自己实现单例类在游戏结尾怎么释放

我的单例类中有些东西需要在游戏结尾释放,但是cocos找不到游戏结尾的函数?

具体一点,哪个单例类?
一般都会有remove系列函数,或者destroy函数。

析构函数 或 OnExit函数呗:14:

我在AppDelegate::~AppDelegate()这里释放的

自己定义的单例类

游戏结束的时候不是Direct的End的函数吗?

class Singleton{
public:
    static Singleton& Instance(){
        static Singleton instance;
        return instance;
    }
    //main退出后会自动释放
    ~Singleton(){}
private:
    Singleton();
};

— Begin quote from ____

引用第6楼wo370506875于2015-03-16 10:57发表的 :
class Singleton{
public:
static Singleton& Instance(){
static Singleton instance;
return instance;
http://www.cocoachina.com/bbs/job.php?action=topost&tid=288440&pid=1259037

— End quote

我写了一个,你看看,不知道有没有问题,编译通过:

//头文件
class Test {
private:
Test() {}
static Test *ptr;
public:
static Test *getInstance() {
if (ptr == nullptr)
ptr = new Test;
return ptr;
}
static void destroyInstance() {
if (ptr != nullptr)
delete ptr;
ptr = nullptr;
}
};

//cpp文件
Test *Test::ptr = nullptr;

你这个写法还是得自己释放,我那块是个静态变量在程序栈上的,程序会自己回收的。

那你把我的destroyInstance中的代码放在destructor中试试看。

你得明白一件事啊
int x//这个X会在作用域结束后自动释放
int* x = new int//这个得手动。

可以这么写
class Singleton{
public:
static Singleton& Instance(){
static Singleton instance;
return instance;
}
//main退出后会自动释放
~Singleton(){ delete x; }
private:
Singleton(){
x = new int(5);
}

    int * x;//你的指针
};

单例 一搬不释放。

参考了cocos的源代码,它们大部分单例类都在Direct中的end中释放

我自己修改了Director,添加了回调列表,专门用来释放自己定义的单例类

修改引擎后面可就麻烦了,是下下下下策

你说游戏"结尾"的时候 ,是指游戏"退出"的时候吗?如果你说的是游戏退出而不是游戏场景退出的话,那么你可以将你的单例的destory放到导演的析构里

是的,以后跟换底层就要改了,但是coco底层不提供,那得自己写了

恩,现在就是这样子做得

如何没提供?~AppDelegate()不行??