C ++类实例化问题

时间:2010-10-26 11:23:06

标签: c++ visual-c++

我已经包含了正确的

  

头文件,   Header Gard

但我无法实例化特定的类

获取错误

error C2065: 'ClassName' : undeclared identifier



Sample Code

Class A{

 //instantiate class B

}


Class B {


 //need to instantiate Class A

}

3 个答案:

答案 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中)。