在编写类的过程中,在 .h 文件中用到类 C 的时候,可以先声明,在 .cpp 文件中再引用,这样就避免了各种包含头文件路径的问题。但是,出现了这样一种错误,就是莫名其妙的无法解析的函数名。
最后查找问题,结果是,在声明 C 的时候,struct C
和 class C
同时用了两种,结果,编译器可能是认为 C
和 C
不是同一个类型。所以才出现了该问题。
举例:
C
的定义和声明:
// C.h
struct C
{ };
//C.cpp
C::funct(){} // 各种实现
// V1.h
struct C;
class V1
{
C* cptr;
}
// V2.h
class C;
class V2
{
C* cptr;
}
这里 两次声明 C
的时候是不一样的,结果就出现了问题。
规范解释:
(待续)