C ++错误:为什么此错误显示" 向量中的预期类型说明符"



我包含向量,但当我在类内声明向量时,它显示一个错误(应为类型说明符(我的代码正确吗?

#include <vector>
#include <string>
class Ecole {
vector<string> arr(10);
};

正如前面提到的其他答案一样,您需要在vector和string前面编写命名空间std。

此外,我假设您必须初始化如下变量:

std::vector<std::string> arr = std::vector<std::string>(10);

因为您不能直接在类内部仅使用(10)来初始化它。(方法之外(

vectorstring在名称空间std中声明,因此使用名称空间来引用它们。

#include <vector>
#include <string>
class Ecole {
std::vector<std::string> arr(10);
};

如果你想摆脱每次使用std,你可以在类声明之前写using namespace std;

#include <vector>
#include <string>
using namespace std;
class Ecole {
vector<string> arr(10);
};

但这是个坏主意,请参阅链接"为什么";使用命名空间std"被认为是不好的做法?

另一个问题是,您试图初始化arr(10)向量,而不直接引用类中的任何变量,您必须在类中声明和初始化这两个变量。

class Ecole {
std::vector<std::string> arr = std::vector<std::string>(10);
};

如果你想声明然后在构造函数中初始化。

#include <vector>
#include <string>
class Ecole {

std::vector<std::string> arr;

Ecole(){
this->arr = std::vector<std::string>(10);
}

};

如果你只想在没有类的情况下使用向量,你可以直接在主函数中使用。

#include <vector>
#include <string>
int main() {
std::vector<std::string> arr(10);
// start playing here
return 0;
}

我敢打赌,如果用<std::string>替换<string>,用std::vector替换vector,它会起作用

问题是stringvector包含在std命名空间中,因此必须相应地对它们进行处理。

另一种使其工作的方法是添加

using namespace std;

class声明之上,尽管据说这是一种糟糕的做法,如下所述:https://www.geeksforgeeks.org/using-namespace-std-considered-bad-practice/

最新更新