我已经包含了正确的
头文件, Header Gard
但我无法实例化特定的类
获取错误
error C2065: 'ClassName' : undeclared identifier
Sample Code
Class A{
//instantiate class B
}
Class B {
//need to instantiate Class A
}
答案 0 :(得分:1)
顺便说一句。在课程定义结束时没有;
。
答案 1 :(得分:1)
根据我的理解,A类和B类之间存在循环依赖关系。因此,您需要对这两个类中的至少一个(甚至两个类)使用前向声明。
答案 2 :(得分:1)
由于您尚未发布任何实际代码供我们实际使用,我会猜测您的代码实际上是什么样的:
A.H:
#ifndef HEADER_A
#define HEADER_A
#include "B.h"
class A {
private:
B someMember;
};
B.h:
#ifndef HEADER_B
#define HEADER_B
#include "A.h"
class B {
public:
doSomething(A param);
};
B.cpp:
#include "B.h"
#include "A.h"
void B::doSomething(A param) { }
正如Flinsch所说,你需要有前瞻性声明以避免包含排序的问题。最简单的方法是去掉.h文件中的循环包含,而只是将前向声明(class B;
和class A;
包含在A.h和B.h中)。