访问其他类函数C++中的类变量

accesing a class variable in other class function C++

本文关键字:类变量 C++ 其他 类函数 访问      更新时间:2023-10-16

我有一个变量映射数据,它用于三个不同的类。我可以全局定义这个变量,并将所有类的定义放在一个cpp文件中,但我想为三个不同类制作不同的文件,因此无法全局定义它。

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

我怎么能做到这一点。提前感谢任何帮助

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

您可以使用好友

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

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

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

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

文件: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;

}