为什么explicit vector (size_type n)
表单在类之外工作但不在内部?
这编译:
#include <vector>
int main() {
std::vector<int> vec_(3); // set capacity to 3
return 0;
}
但不是这样:
#include <vector>
class C {
public:
std::vector<int> vec_(3); // set capacity to 3
};
int main() {
return 0;
}
g++ --std=c++0x -Wall -Wextra -g a.cpp
a.cpp:5:27: error: expected identifier before numeric constant
a.cpp:5:27: error: expected ‘,’ or ‘...’ before numeric constant
为什么呢? :(
答案 0 :(得分:7)
执行此操作的正确方法是:
class C {
public:
C() : vec_(3) {} // set capacity to 3 in constructor initialization list
std::vector<int> vec_;
};
答案 1 :(得分:4)
你想要的是:
class C {
public:
std::vector<int> vec_;
C() : vec_(3) { }
};
这将控制构造vec_
对象时C
的构造方式。
答案 2 :(得分:2)
因为这不是C ++中的有效语法。正确的方法是:
#include <vector>
class C {
public:
std::vector<int> vec_;
public:
// You add a constructor and initialize member data there:
C () : vec_(3) {}
};
还有其他方法可以做到这一点,但这是最广泛使用和可访问的方法。