代码之家  ›  专栏  ›  技术社区  ›  Will I Am

C++好友函数引用

  •  0
  • Will I Am  · 技术社区  · 15 年前

    我遇到这种情况(两个类有两个不同的头文件):

    #include "a.h"
    
    class B {
          friend void  B* A::create(void);
       private:
         int x;
    };
    

    a、 小时

    #include "b.h"
    
    class A {
       public:
         void B* create(void);
       ...
    };
    

    基本上,类A创建“B”对象。我想让create函数create()访问来修改类B的私有成员“x”。我想在C中模拟“internal”关键字,但要在更精细的级别。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Kos    15 年前

    你需要的是一份“远期声明”。基本上,您不会将类的头包含在其他类的头中(除非您想使用composition,否则必须这样做)。在你的情况下,应该是这样的:

    // B.h
    class A;
    class B {
        // declare pointers to A freely
    };
    

    您可能需要在B.cpp中包含A.h(另一种方法)才能真正取消对访问字段的指针的引用,但是循环头包含的问题现在已经解决了。

    推荐文章