c++ - 解决友元类的循环依赖

标签 c++

在最基本的层面上,我需要一个类的方法来访问另一个类的私有(private)数据,例如:

foo.h:

class foo{
    void method( void );
}

bar.h:

class bar{
   friend void foo::method( void );
}

但是,方法需要知道要访问哪个对象,使其看起来更像这样:

foo.h:

class foo{
    void method(bar* point);
}

bar.h:

class bar{
    friend void foo::method(bar* point);
}

但是,如您所见,这提供了循环依赖性:bar 需要 foo.h 来声明 friend ,而 foo 需要 bar.h,因为它使用 bar 指针。该方法还如何知道要访问哪个对象?

最佳答案

如果您发现自己处于循环依赖中,最好检查一次您的设计。一旦您审查了设计并且您仍然觉得需要循环依赖,您需要使用该类的前向声明

class bar;
class foo
{
    void method(bar* point);
}

好读:
When can I use a forward declaration?

关于c++ - 解决友元类的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16282498/

相关文章:

c++ - Ubuntu下Cmake和Intel IPP的编译问题

C++ Linux 服务 - 如何使用 init.d + 自动重启?

c++ - 我可以在 regex_replace 中使用 $1 吗?

c++ - 按位置删除 vector 中的元素?

c++ - VoIP:如何从 Qt 多媒体中的摄像头捕获实时音频/视频流字节?

c++ - 连接到 boost 命名管道

c++ - "new"构造链表节点时如何删除链表?

javascript - 从 JS 切换到 C++ 时,您会遇到什么问题?

c++ - C++中对象访问包含它的对象

c++ - 初始化 pthread 互斥锁