5

我正在浏览这篇文章

并且在第 3 项中有一个声明说

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

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

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

该声明

 Rectangle s(origin());    

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

4

1 回答 1

9

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

rectangle w( origin(), extents() );声明一个w返回rectangle和接受参数的函数:指向函数返回origin的指针和指向函数返回的指针extents

有关更多详细信息,请参阅此问题或浏览标签下的其他问题。

于 2015-07-22T21:54:56.693 回答