我正在经历这个 article
在第 3 项中有一个声明
// C++98
rectangle w( origin(), extents() ); // oops, vexing parse
以上是一个最令人烦恼的解析。如果我做了这样的事情
struct origin
{
};
struct Rectangle
{
Rectangle(const origin& s)
{
}
};
声明
Rectangle s(origin());
工作正常,不像一个令人烦恼的解析。 为什么作者说这是一个令人讨厌的解析。这是打字错误还是我遗漏了什么?
最佳答案
Rectangle s(origin());
也是一个令人烦恼的解析。它声明了一个返回rectangle
的函数s
,并将返回origin
的函数指针作为参数指针。不确定“工作正常”是什么意思。
rectangle w( origin(), extents() );
声明一个函数 w
返回 rectangle
并接受参数:指向函数返回的指针origin
,以及指向函数返回 extents
的指针。
更多详情 see this question或浏览most-vexing-parse下的其他问题标签。
关于c++ - 这是多么令人烦恼的解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31574575/