gpt4 book ai didi

c++ - 在 C++ 中不包含引用的情况下访问其他抽象类

转载 作者:行者123 更新时间:2023-12-04 17:06:18 24 4
gpt4 key购买 nike

我遇到了一个旧代码,其中很少有项目,而且每个项目都有很少的抽象类、头文件和 cpp 文件。
奇怪的是,在一个项目中,一个抽象类使用了在同一项目中另一个抽象类中声明的函数。令我惊讶的是,当前抽象类没有引用其他抽象类,编译器也没有抛出任何错误。
我唯一注意到的是两个文件都在命名空间中。

谁能解释这怎么可能?

这是正在引用的类的示例代码

#ifndef ClassADef
#define ClassADef

#include <string>

namespace globalNameSpace {
class ClassA {
public:

virtual ~ClassA() = default;
virtual std::string method1() const = 0;
};
}
#endif


这是引用上述类的类的示例代码。
#ifndef ClassBDef
#define ClassBDef

#include <string>

//I was expecting an include statement which references the above class

namespace globalNameSpace {
class ClassB {
public:
virtual std::string method2(const ClassA& method1, const bool variable) = 0;
//I was expecting the compiler to throw an error.
};

}

#endif

最佳答案

除了前向声明或显式包含之外,可能还有另一个 CPP 文件以正确的顺序包含两个 header :

#include <ClassADef>
#include <ClassBDef>

这是一种不好的做法,但这可以解释您提供的代码的正确性。

关于c++ - 在 C++ 中不包含引用的情况下访问其他抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56160148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com