C ++无法创建向量

时间:2010-07-28 17:57:21

标签: c++ vector

这很奇怪。我在一个类中创建了一个矢量,但不能在另一个类中创建它。他是我所拥有的代表:

main.h

#include <Windows.h>
#include <ShellAPI.h>
#include <vector>
#include <string>
#include <iostream>

#include "taco.h"

class MyClass
{

public:
    int someint;
    vector<int> myOrder;
};

taco.h

#include <vector>

class OtherClass
{

public:
    vector<int> otherOrder;
};

我收到关于taco.h中的向量声明的编译错误:

error C2143: syntax error : missing ';' before '<'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2238: unexpected token(s) preceding ';'

我在这里缺少什么?我可以取消注释第二个向量声明,它编译得很好。

4 个答案:

答案 0 :(得分:12)

尝试:

std::vector<int> otherOrder;

vectorstd命名空间的一部分。这意味着无论何时在头文件中使用vector,都应包含std::前缀。

你有时可以忘记它的原因是一些包含的文件中可能包含using namespace std;,允许你省略前缀。但是,您应该避免头文件中的using关键字,因为它会污染include它的任何文件的命名空间。

有关using namespace ...危险的更详细说明,请参阅this thread

答案 1 :(得分:3)

试试std::vector<int>。你应该使用命名空间---我假设你有

using namespace std;

main.h的某个地方。关于为什么使用using是不好的做法,有很多关于SO的讨论;我建议你看一下。

答案 2 :(得分:3)

所有C ++标准库对象都位于std命名空间中。尝试

class MyClass
{

public:
    int someint;
    std::vector<int> myOrder;
//  ^^^^^
};

答案 3 :(得分:1)

std::vector<int> ?