这怎么是最令人头疼的解析?

时间:2015-07-22 21:47:11

标签: c++ most-vexing-parse

我正在浏览article

并且第3项中有一条声明说

// C++98 
rectangle       w( origin(), extents() );       // oops, vexing parse

以上是一个最令人烦恼的解析。如果我做了这样的事情

struct origin
{
};
struct Rectangle
{
    Rectangle(const origin& s)
    {
    }
};

声明

 Rectangle s(origin());    

工作正常,并不像一个令人烦恼的解析。 为什么作者说这是一个令人烦恼的解析。这是一个错字还是我错过了什么?

1 个答案:

答案 0 :(得分:9)

Rectangle s(origin());也是一个令人烦恼的解析。它声明了一个返回s的函数rectangle,并将函数作为参数指针返回origin。不确定你的意思是“工作正常”。

rectangle w( origin(), extents() );声明函数w返回rectangle并获取参数:指向返回origin的函数的指针,以及指向返回extents的函数的指针。

有关详细信息see this question或浏览标记下的其他问题。