如何在C++的头文件中使用vector数据类型?

MrB*_*ach 1 c++ struct vector header-files

我在下面有这个结构用于矩阵.当我在main.cpp中声明它时,它已经正常工作,但由于程序变得更复杂,我决定将其交换掉.所以我的头文件看起来像这样:

    #ifndef MATRIX_STRUCT_H
    #define MATRIX_STRUCT_H

    #include <vector>

    // Matrix datatype
    struct matrix_ {
        // Matrix dimension m x n
        unsigned int dimX; // n
        unsigned int dimY; // m
        bool square;
        // Matrix coefficients
        vector <vector <double>> coef;
    };
    typedef struct matrix_ matrix;

    #endif // MATRIX_STRUCT_H
Run Code Online (Sandbox Code Playgroud)

我现在遇到的问题是,第4行#include <vector>如果不在这里就没有区别.我总是得到第13行的错误

error: 'vector' does not name a type
Run Code Online (Sandbox Code Playgroud)

如果你想知道我为什么使用结构而不是类,我只是最近刚从C来到,所以我还没有任何类的经验.

请问有人可以帮助我吗?放弃结构并专注于课程会更好(有帮助)吗?

Jac*_*ley 5

C++标准库包括在std命名空间中放置新声明.你需要写std::vector而不是只是vector.

可能它在你的.cpp文件中起作用的原因是你using namespace std在顶部附近有一条线,它带来了命名空间中的所有内容std并将它带入本地命名空间.这是不好的做法,我建议你不要这样做.

  • 值得一提的是(如果OP被诱惑)尽管在cpp文件中这是不好的做法,但是在头文件中它只是错误的,因为它可能会使包含头文件的正确代码无法编译. (6认同)