修改以下代码中的错误:#include<iostream> #include"MyClass.h" using namespace std; class MyClass { public: MyClass(int a = 0, int b = 0); void Print(); private: int x, y; }; MyClass::MyClass(int a, int b) { x = a; y = b; } void MyClass::Print() { cout << "x=" << x << endl; cout << "y=" << y << endl; } int main() { MyClass obj1, obj2(5, 8); obj1.x = 1; obj1.y = 3; obj1.Print(); obj2.Print(); return 0; }
时间: 2024-01-20 19:02:46 浏览: 173
代码.docx C++经典考试习题
这段代码没有明显的语法错误,但是存在潜在的逻辑错误。在类的定义中,数据成员 x 和 y 是私有的,不能直接在 main 函数中访问和赋值。应该使用类的公有成员函数来访问和修改这些数据成员。
下面是修改后的代码:
```c++
#include<iostream>
#include"MyClass.h"
using namespace std;
class MyClass {
public:
MyClass(int a = 0, int b = 0);
void Print();
void SetX(int a);
void SetY(int b);
int GetX();
int GetY();
private:
int x, y;
};
MyClass::MyClass(int a, int b) {
x = a;
y = b;
}
void MyClass::Print() {
cout << "x=" << x << endl;
cout << "y=" << y << endl;
}
void MyClass::SetX(int a) {
x = a;
}
void MyClass::SetY(int b) {
y = b;
}
int MyClass::GetX() {
return x;
}
int MyClass::GetY() {
return y;
}
int main() {
MyClass obj1, obj2(5, 8);
obj1.SetX(1);
obj1.SetY(3);
obj1.Print();
obj2.Print();
return 0;
}
```
希望这样修改能够帮到您,如有其他问题,欢迎继续询问。
阅读全文