这个问题有以下代码片段:
A::A(const char *pc) {
A(string(pc));
}
A::A(string s) {
vector<string> tmpVector;
tmpVector.push_back(s);
A(tmpVector); // <-- error
}
// Constructor
A::A(vector<string> filePathVector) {
}
问题在于A(tmpVector);
与vector<string> tmpVector;
发生了冲突:error: conflicting declaration 'A tmpVector'
error: 'tmpVector' has a previous declaration as 'std::vector<std::basic_string<char> > tmpVector'
答案中说:
This
A(tmpVector);
跟这个是一样的
A tmpVector; // 但已经有一个名为tmpVector的对象了
并附上了以下评论:
在这种情况下,()是多余的。
我的问题是:为什么括号是多余的?在C++11规范中是什么让它变得如此?我以前从未见过这种情况。