编译器无法将vector识别为类成员

时间:2016-03-11 06:25:48

标签: c++ vector

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;
}

请帮助我,我的问题是为什么我的编译器没有识别在类中声明的向量。

错误:数字常量之前的预期标识符 在数字常量之前预期','或'...'

Error

2 个答案:

答案 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)
{
}