假如在A.h中定义了
Class A
{
public:
int m_nIndex;
void SetIndex();
}在A.cpp中执行
void A:: SetIndex()
{
m_nIndex = 100;
}
那么再次访问的时候, m_nIndex还是等于100的.
但如果B.cpp访问A.cpp中的m_nIndex时候,它是空的.
void B:: SetIndex()
{
A GetIndex;
GetIndex. m_nIndex;
}
请问除了定义成全局外有什么办法在A修改m_nIndex值后B还能访问到修改后的值呢?
Class A
{
public:
int m_nIndex;
void SetIndex();
}在A.cpp中执行
void A:: SetIndex()
{
m_nIndex = 100;
}
那么再次访问的时候, m_nIndex还是等于100的.
但如果B.cpp访问A.cpp中的m_nIndex时候,它是空的.
void B:: SetIndex()
{
A GetIndex;
GetIndex. m_nIndex;
}
请问除了定义成全局外有什么办法在A修改m_nIndex值后B还能访问到修改后的值呢?
GetIndex这是个新对象,除非你在Class A的构造方法中初始化了m_nIndex 要不然当然是空的了
{
A GetIndex;
GetIndex.SetIndex();
GetIndex. m_nIndex;
}
这样的话m_nIndex的值就为100了
定义了对象 期内的值要对其进行赋值后才不为空
static int m_nIndex;
这样就可以在所有实例中共享这个变量值了。
class A
{
private:
int m_nIndex;
public:
void SetIndex(int i);
int GetIndex();
};A.cpp中
void A::SetIndex(int i)
{
m_nIndex = i;
}int A::GetIndex()
{
return m_nIndex;
}main.cpp中
int main()
{
A a; a.SetIndex(100);
cout << a.GetIndex() << endl;
}
关于LZ的问题,我认为你应该看一下设计模式中的单例模式,可以满足你的需求。
你对m_nIndex的操作是放在SetIndex中的,也就是说只要调用了这个函数,那么才会对m_nIndex赋值。
A Getindex,这只是声明了一个A的对象,但是这个对象并没有任何行为。当然这个对象中的成员变量就是空的了啊。