解决朋友班的周期性依赖

时间:2013-04-29 15:28:10

标签: c++

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

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来声明一个朋友,而foo需要bar.h,因为它使用一个条形指针。该方法如何知道要访问哪个对象?

1 个答案:

答案 0 :(得分:2)

如果您发现自己处于循环依赖状态,最好一次检查您的设计。一旦您查看设计,如果您仍然感觉需要循环依赖,则需要使用该类的转发声明

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

好读:
When can I use a forward declaration?