我包含向量,但当我在类内声明向量时,它显示一个错误(应为类型说明符(我的代码正确吗?
#include <vector>
#include <string>
class Ecole {
vector<string> arr(10);
};
正如前面提到的其他答案一样,您需要在vector和string前面编写命名空间std。
此外,我假设您必须初始化如下变量:
std::vector<std::string> arr = std::vector<std::string>(10);
因为您不能直接在类内部仅使用(10)
来初始化它。(方法之外(
vector
和string
在名称空间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
,它会起作用
问题是string
和vector
包含在std
命名空间中,因此必须相应地对它们进行处理。
另一种使其工作的方法是添加
using namespace std;
在class
声明之上,尽管据说这是一种糟糕的做法,如下所述:https://www.geeksforgeeks.org/using-namespace-std-considered-bad-practice/