【发布时间】:2014-03-25 07:27:05
【问题描述】:
我有一个名为“异常”的命名空间的问题
让我们考虑以下示例标题:
#include <exception>
namespace exception
{
struct MyException : public std::exception
{};
}
struct AnotherException : public exception::MyException
{
AnotherException() : exception::MyException() { }
};
此标头无法编译并出现以下错误:
namespacetest.hpp:在构造函数“AnotherException::AnotherException()”中: namespacetest.hpp:12:48: 错误: '(' 标记之前的预期类名 namespacetest.hpp:12:48: 错误: '(' 标记之前的预期'{'有两种解决方案:
1) 在第 12 行用 "::" 限定命名空间
AnotherException() : ::exception::MyException() { }
2) 将命名空间重命名为例如“特殊”
命名空间“异常”导致混淆的原因是什么?我知道有一个类 std::exception。这会造成麻烦吗?
【问题讨论】:
标签: c++ exception namespaces