此问题已更新。请查看代码。
以下代码使用 VC++ Nov 2012 CTP 编译。Scott Meyers 的《Effective C++》一书建议我们应该使用 的方法来避免 const 和 non-const 成员函数的重复。但是,以下代码会导致警告(级别 1)。因为WDK构建工具将警告视为错误,所以下面的代码无法编译成功。
还有其他更好的方法吗?
struct A
{
int n;
A(int n)
: n(n)
{}
int Get() const
{
return n;
}
int Get()
{
return static_cast<const decltype(*this)&>(*this).Get();
}
};
int main()
{
const A a(8);
//
// warning C4717: 'A::Get' : recursive on all control paths,
// function will cause runtime stack overflow
//
a.Get();
}