假设我们有一个源文件A.cpp,在其中前向声明了类型ClassB,并且在没有包含定义ClassB的文件B.cpp的情况下一直使用指向ClassB的指针;在B.cpp中,我们前向声明了ClassA并使用了指向它的指针,而没有包含定义ClassA的A.cpp文件。那么编译器是否能完全接受这种情况?符号解析是否能正常工作?换句话说,这两个目标文件在链接之前不需要互相知道对方的存在吗?
(我假设在Visual Studio上编译C++代码,而没有对默认编译器进行任何更改)
附注:
文件A.cpp
(我假设在Visual Studio上编译C++代码,而没有对默认编译器进行任何更改)
附注:
文件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;
}
}