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