65,210
社区成员
发帖
与我相关
我的任务
分享
static ClassName * instance()
{
static ClassName inst;
return &inst;
}
ClassName *p = ClassName::instance();就行了。terminate called after throwing an instance of '__gnu_cxx::recursive_init_error'
what(): std::exception
#pragma once
/*
* SingleA.h
* */
#include <iostream>
#include "SingleB.h"
class SingleB;
class SingleA
{
public:
static SingleA * instance()
{
static SingleA inst;
return &inst;
}
void print();
void callback();
private:
SingleB *_b;
SingleA();
SingleA(const SingleA&);
SingleA & operator= (const SingleA&);
};
#pragma once
/*
* SingleB.h
* */
#include <iostream>
#include "SingleA.h"
class SingleA;
class SingleB
{
public:
static SingleB * instance()
{
static SingleB inst;
return &inst;
}
void print();
private:
SingleA *_a;
SingleB();
SingleB(const SingleB&);
SingleB & operator= (const SingleB&);
};
/*
* SingleA.cpp
* */
#include "SingleA.h"
SingleA::SingleA()
{
_b = SingleB::instance();
}
void SingleA::print()
{
std::cout << "SingleA.print()" << std::endl;
_b->print();
}
void SingleA::callback()
{
std::cout << "SingleA.callback()" << std::endl;
}
/*
* SingleB.cpp
* */
#include "SingleB.h"
SingleB::SingleB()
{
_a = SingleA::instance();
}
void SingleB::print()
{
std::cout << "SingleB.print()" << std::endl;
_a->callback();
}
/*
* testSingleton.cpp
* */
#include "SingleA.h"
#include "SingleB.h"
int main()
{
SingleA *a = SingleA::instance();
a->print();
return 0;
}
谢谢各位
[/quote]
嗯,对有这么个说法,[/quote]
没事到这里被科普漫画一下:http://blog.sina.com.cn/u/1736737707[/quote]
人生不过百,常怀千岁忧,
我这辈子估计看不到了
[/quote]
嗯,对有这么个说法,[/quote]
没事到这里被科普漫画一下:http://blog.sina.com.cn/u/1736737707
[/quote]
嗯,对有这么个说法,