【发布时间】:2013-05-06 04:31:18
【问题描述】:
为什么链接构造函数时以下不起作用:
#include <iostream>
#include <vector>
class cls {
public:
cls() {cls(5);} // want to resize v to 5
cls(int n) {v.resize(n);}
std::vector<int> v;
};
int main(int argc, const char* argv[]) {
cls x, y(5);
std::cout << x.v.size() << std::endl; // prints 0 <- expected 5
std::cout << y.v.size(); // prints 5
return 0;
}
我希望两个对象都有大小为 5 的 v。怎么了?
我想这样做的原因是因为编写单独的 cls() 和 cls(n) ctors 会重复很多代码。
【问题讨论】:
-
{cls(5);}是错字吗?应该是v.resize(5); -
这就是我的意思,我希望第二个构造函数来处理它。它希望避免代码重复,因为在我的完整代码中实际上不仅仅是
v.resize
标签: c++ class constructor scope