enter image description here我正在尝试一些STL程序。我在main中声明了一个向量,并尝试运行它正在运行的程序,但如果我在类中声明相同的(向量),则会出现编译错误。我认为编译器不识别向量(在类中声明)。
我试过用std ::也是一样的错误。我正在使用netbeans IDE和cigwin编译器。
请找到以下代码
#include <cstdlib>
#include <iostream>
#include <vector>
#include <cctype>
using namespace std;
/*
*
*/
class vectorcl
{
vector<int> v(10);
int i;
public:
vectorcl();
void add_vector();
void dis_vector();
};
vectorcl :: vectorcl()
{
for(i =0;i<10 ;i++)
{
v[i] = 0;
}
}
void vectorcl :: dis_vector()
{
cout<< " The vale is : \n";
for(i =0;i<10 ;i++)
{
cout << "\t " <<v[i];
}
}
void vectorcl :: add_vector()
{
for (i =0 ; i<10; i++)
{
v[i] = i+1;
}
}
int main(int argc, char** argv) {
// vector<int> vp(10);
// for(int j =0;j<10 ;j++)
// {
// cout << " " << vp[j];
// }
vectorcl v1;
v1.dis_vector();
v1.add_vector();
v1.dis_vector();
return 0;
}
请帮助我,我的问题是为什么我的编译器没有识别在类中声明的向量。
错误:数字常量之前的预期标识符 在数字常量之前预期','或'...'
答案 0 :(得分:2)
您不能将vector<int> v(10);
用作成员变量。解决方案是用vector<int> v;
替换它,并添加这个改变构造函数,如下所示:
vectorcl::vectorcl():
v(std::vector<int>(10,0/* This 0 is instead of the for-loop*/)){
}
或另一种选择是将其声明为:
std::vector<int> v = std::vector<int>(10);
P.S。没有必要将int i声明为类成员。只需在你需要的每个功能中声明它。
答案 1 :(得分:1)
乍一看,您正试图在类原型中调用构造函数:vector<int> v(10);
。除非使用成员初始化列表,否则将在包装器类构造函数中调用该类的构造函数。
编辑:使用成员初始化
vectorcl :: vectorcl(): v(10)
{
}