我在代码的抓部分宏,说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