[英]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.