【发布时间】:2015-12-07 16:51:11
【问题描述】:
我有一个带有(以及其他)流操作符的基本异常类:
Base& Base::operator<<(const std::string& str);
此运算符返回*this。
我有几个派生类看起来像:
class Derived : public Base { };
在某些时候,我创建并抛出了一个派生自 Base 的类。比如:
std::string myStr("foo bar");
throw Derived() << myStr;
我想使用以下方法捕获此异常:
try
{
[...]
}
catch(Derived& ex)
{
[...]
}
这样做的最佳方式是什么?在投掷之前将 Base 转换为 Derived 可以吗?我可以将基类更改为模板而不是定义这些派生类吗? [...]?
【问题讨论】:
标签: c++ inheritance