[英]Including an exception class in a header file
我有一对定义类的文件,例如Foo.cpp
和Foo.hpp
,例如Foo
。 Foo
的方法必须抛出一个异常,在文件中定义的潜在MyException.hpp
,但Foo.hpp
不需要 MyException
。
显然.cpp
需要包含异常标头,但是我应该在Foo.hpp
包含异常标头,以允许任何使用Foo
文件定义异常吗?
通常的经验法则是,每个文件都应包含所需的标题。 因此,不,除非在那里需要,否则不要将MyException.hpp
添加到Foo.hpp
。 处理您的异常类的代码应#include "MyException.hpp"
。 因此,显然,无论哪个文件实现引发此异常的成员函数都需要include "MyException.hpp"
,并且任何包含捕获此异常的代码的文件也都需要它。
我假设您从std :: exception派生自定义异常。
现在有两个用例(我想):
我见过的大多数异常都是有益的,没有什么可以解决受影响对象的状态的。
使每个.h
文件自给自足是一种好样式,因此每个标头都将包括/提供其所需的所有功能。 鉴于此,在Foo.hpp
包含MyException.hpp
是Foo.hpp
。 这样, Foo.h
用户Foo.h
将其包含在代码中就不会承受编译时错误。
在Foo.hpp文件中仅包括MyException.hpp标头。 让您的Foo.cpp仅包含Foo.hpp标头。 .cpp文件仅用于实现头文件中声明的接口。 .cpp不应包含其自己的标头中的任何其他包含部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.