【发布时间】:2014-08-01 01:50:20
【问题描述】:
This question 有这个代码 sn-p:
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'
The answer 说:
这个
A(tmpVector);
和这个一样
一个 tmpVector; // 但是已经有一个名为 tmpVector 的对象
添加评论:
在这种情况下,() 是多余的。
我的问题是:为什么括号是多余的? C++11 规范中究竟是什么使之如此?我以前没见过这个。
【问题讨论】:
-
与C++11无关ideone.com/MFGKSQ
-
是的,基本上是另一个“什么是 MVP”的骗局?
-
@BartekBanachewicz 真的吗?怎么样?