C/C++学习笔记

C++编译错误error: expected identifie

2020-03-17  本文已影响0人  零岁的我

#include<iostream>
#include<vector>
#include<queue>
using namespace std;

class Solution
{
private:
    vector<int> c(128,0);  //编译报错
    queue<char> q;
public:
    //Insert one char from stringstream
    void Insert(char ch)
    {
         ++c[ch-'\0'];
         if(c[ch-'\0']==1){
            q.push(ch);
         }
    }
  //return the first appearence once char in current stringstream
    char FirstAppearingOnce()
    {
        while(!q.empty()){
            if(c[q.front()-'\0']==1) return q.front();
            q.pop();
        }
        return '#';
    }

};

int main(int argc,char **argv)
{
    Solution sol;
    sol.Insert('c');
    char c=sol.FirstAppearingOnce();
    cout<<c<<endl;
    return 0;
}

上述代码第9行编译报错。原因是:在c++的类体中,方法以外的区域不允许有初始化,简单类型是可以的(例如int等简单类型变量,以及静态成员变量),但是有构造函数的复杂对象就不可以了(例如vector)。
vector有显示的构造函数,因此一个函数强制转换来调用其构造函数。在上述代码vector<int> c也可以理解成类的成员对象,类的成员对象初始化必须在类的构造函数中初始化。

上一篇下一篇

猜你喜欢

热点阅读