c++ - 从好友类访问私有(private)成员

标签 c++

我没有发帖寻求帮助,而是想尝试自己解决这个问题,但经过数小时的 Google 搜索并观看了无数的 YouTube 视频后,我还是没有成功。我想做的是创建一个友元类,然后从该类访问“父”类的私有(private)成员。我添加了 friend class bar,如下所示,然后尝试使用 .-> 符号来访问私有(private)成员值但没有运气。我感觉我链接正确了,但这只是正确调用私有(private)成员的问题吗?

//Headers/classfoo.h

struct node {
    int data;
    node* next;
};

class foo {
public:
    friend class bar;
    foo();
private
    node *head;
};

//Headers/classbar.h

class bar {
public:
    int test();
};

//源/classbar.cpp

int bar::Test() {
    // nothing working
    // head->data;
    // head.data;
}

最佳答案

为了执行 head->data 你需要一个 foo 对象在 bar 或者传递给 bar::Test( )。那么它可能是这样的:

class bar {
  foo f;
  public:
    int Test();
}

int bar::Test() {
  f.head->data;
}

当然不要忘记初始化成员变量f

关于c++ - 从好友类访问私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22821086/

相关文章:

c++ - 在初始化中省略一个非平凡的复制/移动构造函数是否合法?

c++ - VC2010中使用Char数组显示字符串运行时报错

c++ - 跨多个源文件使用全局(多次使用 extern)

c++ - 编写一个显示星号的简单 for 语句程序

c++ - 为什么对象的大小为零

C++:使用友元类而不是编写 getter/setter 的错误做法?

c++ - 模板成员的别名声明

c++ - 这符合严格的别名规则吗?

c++ - 基于 ZeroMQ session 的请求分派(dispatch)或条件路由

c++ - 如何在 Omnet++ INET 的示例中找到工具 .cc 文件