Borland C++ Builder 6 - E2316 'vector' 不是 'std' 的成员

3
相对于C++而言还比较新,我正在尝试在我的应用程序中使用向量。 我正在使用。

#include <vector>

在头文件中,但是当我编译时,它在这一行失败了:
std::vector<Shot> shot_list;

注意错误 E2316:“'vector' 不是 'std' 的成员”
如果我去掉 std::,就会导致“未定义的符号 'vector'”编译器错误消息。对于这个问题真的很困惑。以前使用时没有任何问题。
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

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

你对 testVect 的声明是错误的。去掉 (1) 部分,它应该只是 std::vector<int> testVect; - Remy Lebeau
1个回答

3

如果没有明确指定vector所在的命名空间,您不能仅使用"vector"。(使用namespace std;)也许您可以粘贴相关代码以获得更具体的帮助。

编辑:

您不能在.h文件中初始化vector。您需要在.cpp文件中使用vector的resize()函数进行初始化。这可以是一个选项(使用类的构造函数):

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

    private:
    std::vector<int> testVect;

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

    };

    #endif

你提供的简单示例在做出更改后可以编译通过。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接