我在代碼的抓部分宏,說C++找出一個變量是一個引用或指針
#define CATCH(doSomething) \
catch (MyException& e) \
{ \
try \
{ \
doSomething; \
} \
} \
catch (MyException* e) \
{ \
try \
{ \
doSomething; \
} \
}
,並在DoSomething的節中,我需要去的內容一個例外,有沒有辦法做到這一點? 一些功能isPointer可以這樣使用:
try
{
THROW(new MyException());
}
CATCH( \
if(isPointer(e)) \
{ \
std::cout << (*e).toString(); \
} \
else \
{ \
std::cout << e.toString(); \
} \
)
你可以使用模板調度 – Dani 2011-12-30 10:08:44
盯着反斜槓的線條會產生一個奇怪的錯覺......無論如何,只要確保總是拋出一個堆棧,你可能會更好,分配價值並通過參考收集。在這裏使用'new'沒有任何好處;通過引用捕獲可以獲得多態行爲。 – 2011-12-30 10:11:14
在C++ 11中,您可以使用類型特徵來檢查這一點。請參閱http://en.cppreference.com/w/cpp/types。還要記住,在捕捉指針時,請記得'刪除'它! – 2011-12-30 10:20:31