电脑网络

c++改错题

346 浏览

c++改错题

1 个回答

成都月子中心用户头像
成都月子中心 回答于 2024-07-20
已采纳

提问:c++改错题

#include<iostream>using namespace std;class A{ int a,b;public:friend void setval(int i,int j); //错误原因1 void showA(){cout<<a<<","<<b<<endl; }};void setval(int i,int j ) //错误原因2{a=i; b=j;}int main(){A obj1;obj1.setval(2,3); //错误原因3,提示:如何确定这个友元函数setval是给对象obj1的两个成员变量a、b赋值?有何根据?所以此处这样写对吗?试根据此提示修改三处错误。obj1.showA();}

网友回答:

错误原因:setval函数必须增加一个参数A*obj,而且必须是指针,否则无法赋值。以下是修改后的:

#include<iostream>

 

using namespace std;

 

class A

{    

 

int a,b; 

public: friend void setval(int i,int j,A* obj); 

 

void showA()  {   cout<<a<<","<<b<<endl;   }

 

};

 

void setval(int i,int j,A* obj)

 

{ obj->a=i;obj->b=j;}

 

int main()

{

A obj1;

A*obj0=&obj1; 

setval(2,3,obj0);        

obj1.showA();

}

运行结果:

我来回答

相关问题