假设我们有一个源文件 A.cpp,我们在其中转发声明了一个类型 ClassB,然后我们继续使用指向 ClassB 的指针,而没有 #include 文件 B.cpp(其中定义了 ClassB);在 B.cpp 中,我们转发声明 ClassA 并使用指向它的指针,而无需 #include A.cpp (其中定义了 ClassA),那么编译器对此是否完全满意?符号解析能正常工作吗?换句话说,这两个目标文件在链接时间之前是否根本不需要相互了解?
(我假设在 Visual Studio 上编译 C++ 代码而不对默认编译器进行任何更改)
PS:
文件 A.cpp
class ClassB;
class ClassA
{
bool JustTakeAClassBPointAndDoNothingWithIt(ClassB* class_b_pointer)
{
if(class_b_pointer)
return true;
else
return false;
return false;
}
}
文件 B.cpp
class ClassA;
class ClassB
{
bool JustTakeAClassAPointAndDoNothingWithIt(ClassA* class_a_pointer)
{
if(class_a_pointer)
return true;
else
return false;
return false;
}
}