2

我有这个问题 Symbol 'A' could not be resolved in file Bh ,我正在为 C/C++ 开发人员使用 Eclipse IDE:

//B.h file

#ifndef __B_H__
#define __B_H__

#include "A.h"



class B:  public cs::A{

};

#endif

包括 Ah 文件:

//A.h file

#ifndef A_H_
#define A_H_
namespace cs{
class A {


};
}

#endif

我在这里缺少什么?

4

3 回答 3

5

您将类A放在命名空间中,在使用它时应该保持命名空间解析:

class B:  public cs::A{

};

或者

//B.h file

#ifndef __B_H__
#define __B_H__

#include "A.h"

using namespace cs;

class B:  public A{

};

#endif

不建议这样做(查看 Als 的评论)。

您也可以这样做以避免每次使用时都保留整个命名空间限定A(您应该在第一个解决方案中这样做)和using所有命名空间:

//B.h file

#ifndef __B_H__
#define __B_H__

#include "A.h"

using cs::A;

class B:  public A{

};

#endif
于 2012-05-05T10:41:09.750 回答
3
class B: public cs::A{ };
                ^^^^^^ 

您需要提供 class 的完全限定名称A

请注意,该类A是在命名空间内定义的cs,因此您不能在A没有命名空间限定的情况下使用。

于 2012-05-05T10:40:27.610 回答
0

您正在使用命名空间 cs,请记住在声明 B 类时再次使用它。

//B.h file

#ifndef __B_H__
#define __B_H__

#include "A.h"


class B:  public cs::A{

};

#endif
于 2012-05-05T10:42:27.087 回答