|
发表于 2004-9-8 19:04:00
|
显示全部楼层
Re:Lib中的static变量怎么会对外不可见
假如main函数中是这样的,那么这个TestB就不会被构造。
int main(int argc, char* argv[])
{
//TestB &B=singleton<TestB>::instance();
//singleton<TestB>::instance();
return 0;
}
假如你觉得有可能因为构造函数造成没打出来可以这样试:
#include <iostream>
template<class T>
class singleton: private T
{
private:
singleton(){}
~singleton(){}
public:
static T &instance()
{
static singleton<T> s_oT;
return(s_oT);
}
};
struct TestB
{
public:
TestB()
{
i++;
std::cout<<"run "<<i<<std::endl;
}
void f()
{
std::cout<<i<<std::endl;
}
static int i;
};
int TestB::i=0;
int main(int argc, char* argv[])
{
TestB &B=singleton<TestB>::instance();
singleton<TestB>::instance();
B.f();
return 0;
}
|
|