符号“A”无法解析

时间:2022-07-13 20:52:16

I have this problem Symbol 'A' could not be resolved in file B.h , I'm using Eclipse IDE for C/C++ Developers:

我有这个问题符号A不能在文件B中解决。h,我在用Eclipse IDE开发C/ c++开发人员:

//B.h file

#ifndef __B_H__
#define __B_H__

#include "A.h"



class B:  public cs::A{

};

#endif

that include A.h file:

这包括一个。h文件:

//A.h file

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


};
}

#endif

What I'm missing here ?

我错过了什么?

3 个解决方案

#1


5  

You placed the class A inside a namespace, you should keep the namespace resolution while using it:

将类A放在名称空间中,使用名称空间时应保持名称空间解析:

class B:  public cs::A{

};

Or

//B.h file

#ifndef __B_H__
#define __B_H__

#include "A.h"

using namespace cs;

class B:  public A{

};

#endif

Which isn't recommended (check Als's comment).

这是不推荐的(请查看Als的评论)。

Also you can do this to avoid both keeping the whole namespace qualification every time you use A (which you should do in the first solution), and using all the namespace:

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

//B.h file

#ifndef __B_H__
#define __B_H__

#include "A.h"

using cs::A;

class B:  public A{

};

#endif

#2


3  

class B: public cs::A{ };
                ^^^^^^ 

You need to provide the fully qualified name of class A.

您需要提供类A的完全限定名。

Note that the class A is defined inside the namespace cs and hence you cannot just use A without namespace qualification.

注意,类A是在名称空间cs中定义的,因此不能只使用没有名称空间限定的名称空间。

#3


0  

You are using namespace cs, remember to use that again when declaring class B.

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

//B.h file

#ifndef __B_H__
#define __B_H__

#include "A.h"


class B:  public cs::A{

};

#endif

#1


5  

You placed the class A inside a namespace, you should keep the namespace resolution while using it:

将类A放在名称空间中,使用名称空间时应保持名称空间解析:

class B:  public cs::A{

};

Or

//B.h file

#ifndef __B_H__
#define __B_H__

#include "A.h"

using namespace cs;

class B:  public A{

};

#endif

Which isn't recommended (check Als's comment).

这是不推荐的(请查看Als的评论)。

Also you can do this to avoid both keeping the whole namespace qualification every time you use A (which you should do in the first solution), and using all the namespace:

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

//B.h file

#ifndef __B_H__
#define __B_H__

#include "A.h"

using cs::A;

class B:  public A{

};

#endif

#2


3  

class B: public cs::A{ };
                ^^^^^^ 

You need to provide the fully qualified name of class A.

您需要提供类A的完全限定名。

Note that the class A is defined inside the namespace cs and hence you cannot just use A without namespace qualification.

注意,类A是在名称空间cs中定义的,因此不能只使用没有名称空间限定的名称空间。

#3


0  

You are using namespace cs, remember to use that again when declaring class B.

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

//B.h file

#ifndef __B_H__
#define __B_H__

#include "A.h"


class B:  public cs::A{

};

#endif