2301_81114987 2024-04-05 23:25 采纳率: 66.7%
浏览 11
已结题

c++程序出现了问题,解决不了

img

请问我一直显示15 12 D:\c++源文??疵?名1.cpp [Error] expected initializer before '.' token
19 12 D:\c++源文??疵?名1.cpp [Error] expected initializer before '.' token
是哪里出了问题呢

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2024-04-05 23:25
    关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    根据给出的编译日志信息:

    • Error] expected initializer before '.' token (在‘.’前缺少初始化器)
    • Error] expected initializer before '.' token (在‘.’前缺少初始化器)

    可以看出问题在于在类定义中的变量名没有加上分号,同时在类外定义成员函数的时候没有加上类名。出现以上错误的代码如下:

    class point
    {
    private: 
        int xj //此处缺少分号
        int y; 
    public: 
        void setpoint(int,int)j
        void display(); 
    }; 
    
    void point.setpoint(int a,int b){ X=aj
    {
        x=a; //修改‘X’为‘x’
        y=b; 
    } 
    
    void point.display(){ 
        cout<<"("<"x"<","<"y"<")"<endl; 
    } 
    
    int main(){ 
        int a,b; 
        cin>>a>>b; 
        point P;
        P.setpoint(a,b); //调用成员函数时需首先实例化对象
        P.display(); 
        return 0; 
    }
    

    针对以上问题,可以通过以下解决方案进行修改:

    1. 在类定义中变量名后加上分号;

    2. 在类外定义成员函数时需加上类名并使用作用域解析运算符‘::’,同时修改变量名‘X’为‘x’;

    3. 在调用成员函数时需要首先实例化对象。

    修改后的代码如下所示:

    #include<iostream> 
    using namespace std; 
    
    class point 
    { 
    private: 
        int x; //添加分号
        int y; 
    public: 
        void setpoint(int, int); //声明成员函数
        void display(); //声明成员函数
    }; 
    
    void point::setpoint(int a, int b) //加上类名及作用域解析运算符
    { 
        x = a; 
        y = b; 
    } 
    
    void point::display() //加上类名及作用域解析运算符
    { 
        cout<<"("<<x<<","<<y<<")"<<endl; 
    } 
    
    int main() 
    { 
        int a, b; 
        cin>>a>>b; 
        point P;
        P.setpoint(a, b); //实例化对象并调用成员函数
        P.display(); 
        return 0; 
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月13日
  • 已采纳回答 4月5日
  • 创建了问题 4月5日