【发布时间】:2018-03-08 22:04:39
【问题描述】:
我只是想知道根据下面的示例在哪里需要/正确地包含特定的头文件。假设我有一个异常类的定义:
//exc.hpp
#ifndef EXC_H
#define EXC_H
class MyException : public exception {
};
#endif /* EXC_H */
然后我有另一个类定义抛出这样的异常:
//a.cpp
void SomeClass::someMethod(void) {
throw MyException(...);
}
并有另一个文件处理该异常,例如:
//main.cpp
#include "a.hpp"
int main() {
...
catch(MyException & e) { ... }
}
所以我的问题是,我应该将#include "exc.hpp" 放在哪里?只发给a.hpp,还是发给a.hpp 和main.cpp?
当涉及到makefile... 应该如何在此类文件中指定目标?
【问题讨论】:
-
您的“exc.hpp”不完整,因为没有看到用作基类的
exception的定义。因此,包含该标头仅在先前定义exception的编译单元中有效。