我在矩阵下面有这个结构。当我在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
如果您想知道为什么我使用结构而不是类,那么我只是从C刚来的,所以我还没有任何关于类的经验。
有人可以帮助我吗?放弃这些结构而只专注于课程会更好(会有所帮助)吗?
答案 0 :(得分:5)
C ++标准库在std
命名空间中包含放置新的声明。您需要编写std::vector
而不是vector
。
很可能它在您的.cpp文件中起作用的原因是,行using namespace std
位于顶部附近,它将所有来自命名空间std
的内容带入本地命名空间。这个is bad practice,我建议您停止这样做。