访问另一个类函数C ++中的类变量

时间:2012-07-09 14:08:35

标签: c++ class

我有一个变量map dataa ehich用于三个不同的class.i可以全局定义这个变量并将所有类defination放在一个cpp文件中但我想为三个不同的类制作不同的文件,因此无法全局定义它。

现在我想在一个类中定义这个变量说A然后想在剩下的两个类中使用这个数据,比如说B和C.

我怎么能这样做。提前感谢任何帮助

3 个答案:

答案 0 :(得分:0)

您可以使用公共get和set方法访问A类中的变量。或者只是在A类中创建一个公共变量。

答案 1 :(得分:0)

或者,您可以尝试将此变量地图数据作为新单例类的一部分。 3个不同类的其余部分可以使用get方法

访问此单例类

file:singleton.h

#include <iostream>
using namespace std;

class singletonClass
{
  public:
      singletonClass(){};
      ~singletonClass(){};

  //prevent copying and assignment
  singletonClass(singletonClass const &);
  void operator=(singletonClass const &);

  //use this to get instance of this class
  static singletonClass* getInstance()
  {
     if (NULL == m_Singleton)  //if this is the first time, new it!
        m_Singleton = new singletonClass;

     return m_Singleton;
  }

  int getData()
  {
     return data;
  }

  void setData(int input)
  {
      data = input;
  }
  private:
    static singletonClass* m_Singleton;  //ensure a single copy of this pointer
    int data;
 };
 //declare static variable as NULL
singletonClass* singletonClass::m_Singleton = NULL;

文件:ClassA.h

class ClassA
{
  public:
      ClassA(){};
      ~ClassA(){};

     int getVarFromSingleton()
     {
          m_Singleton = singletonClass::getInstance();  //get a pointer to the singletonClass
          return data = m_Singleton->getData();  //get data from singleton class and return this value
     }
  private:
     singletonClass* m_Singleton;  //declare a pointer to singletonClass
     int data;
 };

文件:main.cpp

int main()
{
singletonClass* DataInstance;
ClassA a;
int data;

DataInstance = singletonClass::getInstance();

DataInstance->setData(5);

data = a.getVarFromSingleton();

cout << "shared data: " << data << endl;

return 0;

}

答案 2 :(得分:0)

您可以使用朋友

class A
{
friend class B;
friend class C;
private:
int m_privateMember;
};

class B {
};

class C {
};

现在,B和C可以访问A的私人会员。

但这不是最好的方法。尽量避免它。