C++ C+;中类中的友元函数出现问题+;?

C++ C+;中类中的友元函数出现问题+;?,c++,function,oop,friend,C++,Function,Oop,Friend,我有一个包含3个字段a、b和c的类。我想计算a、b或c边盒子的体积。我想用一个friend函数来实现这一点。然而,当我编译程序时,编译器给出了一个错误,没有找到全局运算符,它采用Box类型。我想问为什么会这样 #include "pch.h" #include <iostream> using namespace std; class Box { double a, b, c; public: Box(double sa, double sb, double

我有一个包含3个字段a、b和c的类。我想计算a、b或c边盒子的体积。我想用一个friend函数来实现这一点。然而,当我编译程序时,编译器给出了一个错误,没有找到全局运算符,它采用Box类型。我想问为什么会这样

#include "pch.h"
#include <iostream>
using namespace std;
class Box {
    double a, b, c;
    public:
    Box(double sa, double sb, double sc) {
            a = sa;
            b = sb;
            c = sc;
    }
    friend double calcVolume(Box bx) {
    return bx.a*bx.b*bx.c;

    };

};

int main() {
    Box a(5.67, 6.43, 7.00),b(90,32.76,44.18);
    cout << calcVolume(a)<<endl;


    return 0;
}
#包括“pch.h”
#包括
使用名称空间std;
类框{
双a、b、c;
公众:
盒子(双sa,双sb,双sc){
a=sa;
b=某人;
c=sc;
}
友人双卡容量(bx盒){
返回bx.a*bx.b*bx.c;
};
};
int main(){
方框a(5.67,6.43,7.00),b(90,32.76,44.18);

cout您的代码中有一个错误
返回bx.a*bx.b*bx*c;
,应该是
返回bx.a*bx.b*bx.c;
(最后一个点)

#包括
使用名称空间std;
类框{
双a、b、c;
公众:
盒子(双sa,双sb,双sc){
a=sa;
b=某人;
c=sc;
}
friend双卡容量(盒子和bx){
返回bx.a*bx.b*bx.c;
};
};
int main(){
方框a(5.67,6.43,7.00),b(90,32.76,44.18);

cout有两件事:在不修改参数时使用const,其次不要使用namespace std。现在,这对我很有用

#include <iostream> 

class Box 
{ 
    double a; 
    double b; 
    double c; 
public: 
    Box(double ain, double bin, double cin) {a = ain; b = bin; c = cin;} 
    friend double calcVol(const Box& rOther)
    {
        return rOther.a*rOther.b*rOther.c;
    }
}; 

int main() 
{ 
    Box a(14.8, 10.8, 11.01), b(8,5.0,6.2); 
    std::cout<<"vol a :: "<<calcVol(a)<<std::endl; 
    std::cout<<"vol b :: "<<calcVol(b)<<std::endl; 

    return 0; 
}
#包括
类框
{ 
双a;
双b;
双c;
公众:
盒子(双ain,双bin,双cin){a=ain;b=bin;c=cin;}
friend double calcVol(const Box&rOther)
{
返回rOther.a*rOther.b*rOther.c;
}
}; 
int main()
{ 
方框a(14.8,10.8,11.01),b(8,5.0,6.2);

std::cout代码中有输入错误,请将return bx.abx.bbx*c更改为return bx.a*bx.b*bx.c;在注释
#包括“pch.h”后无法复制
。该错误可能存在于您既不使用也不在此处显示的代码段中…VTC正是出于此原因。结果显示的是相同的完整错误消息。通常,当您不使操作员过载时,会出现此错误。
#include <iostream> 

class Box 
{ 
    double a; 
    double b; 
    double c; 
public: 
    Box(double ain, double bin, double cin) {a = ain; b = bin; c = cin;} 
    friend double calcVol(const Box& rOther)
    {
        return rOther.a*rOther.b*rOther.c;
    }
}; 

int main() 
{ 
    Box a(14.8, 10.8, 11.01), b(8,5.0,6.2); 
    std::cout<<"vol a :: "<<calcVol(a)<<std::endl; 
    std::cout<<"vol b :: "<<calcVol(b)<<std::endl; 

    return 0; 
}