3

对 c++ 来说相当新,我正在尝试在我的应用程序中使用向量。我在用

#include <vector>

在头文件中,但是当我编译它在这一行失败:

std::vector<Shot> shot_list;

注意错误 E2316 'vector' is not a member of 'std'

如果我随后删除 std::,则会导致未定义符号“向量”编译器错误消息。对这个真的很茫然。使用没有问题

std::list<Shot> shot_list; 

在使用向量之前。

这是一个简单的示例,但无法实现:

//---------------------------------------------------------------------------

#ifndef testclassH
#define testclassH
//---------------------------------------------------------------------------
#include <vector>
class TestClass {
        private:
        std::vector<int> testVect(1); // removing std:: and adding using namespace std; below the include for the vector it still fails to compile;

};

#endif

对我来说,我看不出这个和这个例子有什么区别

4

1 回答 1

3

在不明确向量所在的命名空间的情况下,您不能单独使用“向量”。(使用命名空间std;)也许您可以粘贴相关代码以获得更多特殊帮助。

编辑:

您不能在 .h 中初始化向量。您需要在 .cpp 中执行此操作,可能使用向量的 resize() 函数。这可以是您的一个选项(使用类的构造函数):

    #ifndef testclassH
    #define testclassH
    //---------------------------------------------------------------------------
    #include <vector>
    class TestClass {

    private:
    std::vector<int> testVect;

    public:
    TestClass()
    {
        testVect.resize(4);
    }

    };

    #endif

如果您进行更改,您给出的简单示例将编译。

于 2012-04-28T19:26:10.050 回答