一个我有点不太清楚且描述不清的C++问题我在实现一个书上的简单实例,出了一个问题,而自己又想不出到底是哪
一个我有点不太清楚且描述不清的C++问题
我在实现一个书上的简单实例,出了一个问题,而自己又想不出到底是哪里的问题,还请各位指点一下:
- C/C++ code
//我将程序主要出现的问题用简单的代码突显出来,大致问题也是这样#include <iostream>using namespace std;class B;class A{public: void test(const B *msg){ cout<<msg->_x;//编译器报错,为use of undefined type 'B',使用未定义的B } int _y;};class B{public: int _x; A *a;};编译器在那报错我不太理解,我明明在前面声明了class B;为什么还是出现这样的问题
而当我将B类实体放在A类前面,并在B前面声明A类,这样又能编译通过,注意到,我的B类中也使用了A类的一个指针变量;
当我将B类中的A *a;改为A a;定义一个A类的成员变量时,这时,同样的错误又发生了, 'a' use of undefined type 'A'
我到底是将A类放在B类前,还是将B类放在A类前呢,有点小纠结,又或许是我根本就将语法弄错了呢。请各位开导一下,谢谢!
[解决办法]
比较简单的方法,是把那个成员函数的定义放到B定义的下面:
- C/C++ code
class B;class A{public: void test(const B *msg); int _y;};class B{public: int _x; A *a;};void A::test(const B *msg){ cout<<msg->_x;//编译器报错,为use of undefined type 'B',使用未定义的B}
[解决办法]
