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

请问我一直显示15 12 D:\c++源文??疵?名1.cpp [Error] expected initializer before '.' token
19 12 D:\c++源文??疵?名1.cpp [Error] expected initializer before '.' token
是哪里出了问题呢
晚上好🌙🌙🌙
本答案参考ChatGPT-3.5
根据给出的编译日志信息:
可以看出问题在于在类定义中的变量名没有加上分号,同时在类外定义成员函数的时候没有加上类名。出现以上错误的代码如下:
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;
}
针对以上问题,可以通过以下解决方案进行修改:
在类定义中变量名后加上分号;
在类外定义成员函数时需加上类名并使用作用域解析运算符‘::’,同时修改变量名‘X’为‘x’;
在调用成员函数时需要首先实例化对象。
修改后的代码如下所示:
#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;
}