[英]singleton class based on static object reference initializing class members to default c++11
我知道这方面有很多问题,但是下面的示例不起作用,并且需要说明或简单的解决方案(我知道我可以使用名称空间和类似的解决方案,但是我想了解这里有什么问题。
它与以前的问题不同,因为
struct point
{
float x;
float y;
point(): x(0.0), y(0.0) {}
class A
{
public:
static A& getRef();
float getF();
void setP(point P);
point getP();
void setF(float F);
private:
A();
~A();
float m_myFloat;
point m_P;
};
// implementation
A& A::getRef()
{
static A m_A;
return m_A;
}
float A::getF()
{
return m_myFloat;
}
void A::setF(float F)
{
m_myFloat = F;
}
void A::setP (point P)
{
m_P.x = P.x;
m_P.y = P.y;
}
point getP()
{
point P;
P.x = m_P.x;
P.y = m_P.y;
return P;
}
A::A()
{
m_myFloat = 12.01;
m_P.x = 13;
m_P.y = 14;
}
A::~A()
{
}
// cal from main
point p;
p.x = 19;
p.y = 20;
float F = 19.54;
A::getRef().setF(F);
A::getRef().setP(p);
p = A::getRef().getP()
std::cout << A::getRef().getF() << std::endl;
std::cout << p.x << " ," << p.y << std::endl;
当成员正确更新时,无论何时调用getRef()都会初始化结构点,这是为什么呢? 我想强调的是C ++ 11(!!!)
非常感谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.