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

How can I use the vector datatype in a header-file in C++?

我在下面有这个结构用于矩阵。当我在 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

我现在遇到的问题是,第 4 行 #include <vector> 是否存在都没有关系。我总是收到第 13 行的错误

error: 'vector' does not name a type

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

请问有人能帮帮我吗?放弃结构并只专注于 classes 会更好吗?

C++ 标准库在 std 命名空间中包含新的声明。你需要写 std::vector 而不是 vector.

它在您的 .cpp 文件中起作用的可能原因是您在顶部附近的某处有行 using namespace std,它将名称空间 std 中的所有内容带入本地名称空间。 is bad practice 我建议你停止这样做。