【发布时间】:2011-06-02 05:48:10
【问题描述】:
namespace X
{
void* operator new (size_t);
}
给出错误信息:
error: ‘void* X::operator new(size_t)’ may not be declared within a namespace
是gcc compiler bug 吗?在较旧的 gcc 版本中,它似乎正在工作。 任何想法,为什么不允许?
用例:
我只想为类允许自定义operator new/delete,并希望禁止全局new/operator。不是链接器错误,而是很容易捕获编译器错误;所以我编码了:
namespace X {
void* operator new (size_t);
}
using namespace X;
这适用于旧版本的 gcc,但不适用于新版本。
【问题讨论】:
-
如果您想为类使用自定义运算符,请为它们提供具有该自定义运算符的公共基类。
标签: c++ namespaces new-operator compiler-bug