由C ++中的继承引起的循环标头依赖性

时间:2018-07-05 05:26:20

标签: c++ inheritance circular-dependency

我有两个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 {
    // ...
};

省略了“包含一次”宏。该代码将无法编译,因为ObjectException之一将变得未知,因此我添加了前向声明头文件common.h

class Object;
class Exception;

并将#include行更改为#include "common.h"。该技能适用于参数和返回类型,但由于C ++拒绝派生不完整的基类,因此在继承时会失败。如何解决?

0 个答案:

没有答案