类变异其他类的数据

时间:2016-12-29 23:33:36

标签: c++ class oop

我有两个名为Data和A的类.A类主要是一组操作Data中数据的函数。现在我需要一种方法让A访问Data中的所有数据。我知道有两种方法可以做到。

  1. 我可以将数据引用传递给A但是我总是要写前缀“数据”。我认为这真的很烦人,反正也没有歧义。

  2. 我可以使A成为数据的超类。但是A中的一些方法调用了另一个类B,它也改变了类Data,在这种方法中我不知道如何做到这一点。

  3. 所以我的问题是:A是否有另一种方式可以访问更合适的数据中的数据?

2 个答案:

答案 0 :(得分:1)

您正在寻找的概念称为friend类。朋友类可以访问他们声明的类的私有成员。所以,你有类似

的东西
class A; //Forward declaration
class Data
{
friend class A; //Forward friend declaration, instances of A
                //can access private members of Data
public:
    //Implementation details
private:
    int m_myData;
};

class A
{
    //Do whatever to an  instance of Data (probably take it by reference)
public:
    void multiplyData(Data &data, int multiple) { data.m_myData *= multiple; }
};

答案 1 :(得分:-1)

如果问题是要从A类访问数据,则将数据声明为全局。你可以很好地访问任何人。它也可以是A类。将类数据作为头文件用于A类实现,Data的所有公共成员都可用于A类。