0

为什么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

为什么?:(

4

3 回答 3

7

正确的方法是:

class C {
public:
    C() : vec_(3) {} // set capacity to 3 in constructor initialization list
    std::vector<int> vec_;
};
于 2013-10-30T15:17:18.223 回答
4

你想要的是:

class C {
public:
    std::vector<int> vec_;
    C() : vec_(3) { }
};

这将控制vec_构造C对象时的构造方式。

于 2013-10-30T15:17:19.317 回答
2

因为这不是 C++ 中的有效语法。正确的方法是:

#include <vector>

class C {
public:
    std::vector<int> vec_;

public:
    // You add a constructor and initialize member data there:
    C () : vec_(3) {}
};

还有其他方法可以做到这一点,但这是使用最广泛和最容易获得的一种。

于 2013-10-30T15:17:28.050 回答