美文网首页C/C++学习笔记
C++编译错误error: expected identifie

C++编译错误error: expected identifie

作者: 零岁的我 | 来源:发表于2020-03-17 15:42 被阅读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也可以理解成类的成员对象,类的成员对象初始化必须在类的构造函数中初始化。

    相关文章

      网友评论

        本文标题:C++编译错误error: expected identifie

        本文链接:https://www.haomeiwen.com/subject/dxctyhtx.html