c – 在全局范围内访问私有变量
发布时间:2020-12-16 10:27:43 所属栏目:百科 来源:网络整理
导读:在下面的代码中,全局范围中的foo函数尝试访问Box的私有变量,这些变量当然不起作用.我必须让foo函数在学校作业的地方显示代码中使用一行代码. #include iostreamusing namespace std;class Box { int x,y; public: Box(int xi,int yi) {x=xi;y=yi;} // One li
在下面的代码中,全局范围中的foo函数尝试访问Box的私有变量,这些变量当然不起作用.我必须让foo函数在学校作业的地方显示代码中使用一行代码.
#include <iostream> using namespace std; class Box { int x,y; public: Box(int xi,int yi) {x=xi;y=yi;} // One line of code to make foo(Box,Box) work }; bool foo(Box l,Box r) {return (l.x*l.y)>(r.x*r.y);} int main(int argc,char* argv[]) { Box b1(3,4),b2(1,2); if (foo(b1,b2)) cout << "b1>b2n"; return cin.get(); } 解决方法
将foo声明为Box中的友元函数
#include<iostream> class Box { int x,y; public: Box(int xi,int yi) :x(xi),y(yi){}// Always use initializer list for initializing data members,i.e. prefer initialization over assignment friend bool foo(Box,Box);// friend functions can access private members }; bool foo(Box l,Box r) // friend keyword not to be written while defining the function {return (l.x*l.y)>(r.x*r.y);} int main(int argc,char* argv[]) { Box b1(3,2); if (foo(b1,b2)) std::cout << "b1>b2n"; return std::cin.get(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |