我有两个C ++头文件/源文件。在Object.h
中:
#include "Exception.h"
class SomeException : public Exception {};
class Object {
public:
someFoo() {
throw SomeException();
}
};
在Exception.h
中:
#include <exception>
#include "Object.h"
class Exception : public Object, public std::exception {
// ...
};
省略了“包含一次”宏。该代码将无法编译,因为Object
或Exception
之一将变得未知,因此我添加了前向声明头文件common.h
:
class Object;
class Exception;
并将#include
行更改为#include "common.h"
。该技能适用于参数和返回类型,但由于C ++拒绝派生不完整的基类,因此在继承时会失败。如何解决?