C ++错误:使用未定义的类型

时间:2014-08-26 09:54:17

标签: c++

我有两个班级,Friend2Friend1的朋友。在Friend2访问Friend1私有成员变量后,我希望Friend1能够访问Friend2的公共成员函数。所以我决定在Friend1内使用合成。但是,编译器向我显示错误:

use of undefined type 'friend2'

然后,我尝试了另一种方式,让Friend1成为Friend2的朋友。但我仍然有同样的错误。有人会教我解决方法吗?很多!

#ifndef FRIEND1_H
#define FRIEND1_H

class friend2;

class friend1 {
  private:
    int x;
    public:
    friend1();

    int comp(friend2* f2o);

    friend class friend2;
    };

    friend1::friend1() {
      x = 1;
    }

    int friend1::comp(friend2* f2o) {
      return f2o->getxx(); //the error : use of undefined type 
    }

#endif


#ifndef FRIEND2_H
#define FRIEND2_H

#include "friend1.h"
#include <iostream>

class friend2 {
  private:
    int xx;
    public:
    friend2();
    void p(friend1* f1o);

    int getxx() const;

    friend class friend1;
    };

    friend2::friend2() {}

    void friend2::p(friend1* f1o) {
      xx = f1o->x;
    }

    int friend2::getxx() const {
      return xx;
    }

#endif

另外,组合或朋友课更好的方法吗?为什么呢?

1 个答案:

答案 0 :(得分:2)

您获得//the error : use of undefined type因为class Friend2仅被声明,此时未定义。要解决此问题,请将int friend1::comp(friend2* f2o)实施移至friend1.cpp,并在其中加入friend2.h

更新一般来说,如果两个班级是共同的朋友(即使其中只有一个是另一个朋友),那么考虑这个设计就是一个很好的理由。