我定义了一个函数,该函数返回两个整数(属于A类)中的最大值。如何使它用于另一个B类?(作为它的朋友函数?)
class A
{
int a;
int b;
public:
void setvalue(){
a=10;
b=20;
}
int max(){
if(a>b){
return a;
}
else{
return b;
}
}
};
class B
{
int c;
int d;
public:
void setvalue(){
c=10;
d=20;
}
friend int A::max();
};
int main()
{
A x;
x.setvalue();
cout<<"max is"<<x.max();
B y;
y.setvalue();
cout<<"max is"<<y.max();
return 0;
}
prog.cpp:38:20: error: 'class B' has no member named 'max'
cout<<"max is"<<y.max();`
答案 0 :(得分:1)
此
friend int A::max();
是朋友成员函数的正确声明。
问题在于类B没有最大成员函数。所以这个表情
y.max()
发出错误。
似乎您需要继承类B中的类A并将成员函数max声明为虚函数。
答案 1 :(得分:0)
让我们实践一下。您有A类和B类。 A的最大朋友是B的朋友。你做对了。但这并不意味着您拥有A的方法。 在现实生活中比喻。如果您是某人的朋友。这并不意味着您可以要求他的财产。确实,您可以要求您的朋友借钱给您,但您不能声称财产是您的。同样,您可以使用A的max(仅使用它),但不能说您是所有者。
class A
{
public:
int max(int x,int y)
{
if(x>y)
return a;
return b;
}
class B : public A//this is important
{
int c ;
}
int main()
{
B y;
cout<<"max is"<<y.max(2,3);
return 0;
}`