假如在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还能访问到修改后的值呢?

解决方案 »

  1.   

    A GetIndex;
    GetIndex这是个新对象,除非你在Class A的构造方法中初始化了m_nIndex 要不然当然是空的了
      

  2.   

    void B:: SetIndex()
    {
        A GetIndex;
        GetIndex.SetIndex();
        GetIndex. m_nIndex;
    }
    这样的话m_nIndex的值就为100了
    定义了对象 期内的值要对其进行赋值后才不为空
      

  3.   

    可以把成员变量定义成静态的。
    static int m_nIndex;
    这样就可以在所有实例中共享这个变量值了。
      

  4.   

    楼主需要了解一下如何在C++中定义和使用类,看下面的例子就明白了A.h中
    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;
    }
      

  5.   

    同意这个,static member不属于对象的成员。属于类的成员
      

  6.   

    你在B中创建了A类的一个新对象,当然这个新对象的成员变量为空了。
    关于LZ的问题,我认为你应该看一下设计模式中的单例模式,可以满足你的需求。
      

  7.   

    A中的成员变量是针对A的某个对象来说的,你新定义了一个A的对象,B访问到的自然不是之前那个了
      

  8.   

    楼主应该找一本C++的书,先了解类,对象,成员变量之间的关系。
    你对m_nIndex的操作是放在SetIndex中的,也就是说只要调用了这个函数,那么才会对m_nIndex赋值。
    A Getindex,这只是声明了一个A的对象,但是这个对象并没有任何行为。当然这个对象中的成员变量就是空的了啊。