C++中的友元函数显示"variable or feild declared void error"

friend function in C++ shows "variable or feild declared void error"

本文关键字:feild or declared void error variable C++ 友元 函数 显示      更新时间:2023-10-16

我正在为我的OOP实验室做此代码,并且我遇到了以下问题,我尝试了很多事情,但全都徒劳无功:

   #include<iostream>
using namespace std;
void ad(&mt &ft){
    mt.m=mt.m+(mt.c/100);
    ft.f=ft.f+(ft.i/12);
    if(t==0){
        m=mt.m+(ft.f/3.281);
        m=round(m);
        c=(int)(m%100);
        m=(int)(m/100);
    }
    else if(t==1){
        f=ft.f+(mt.m*3.281);
        f=round(f);
        i=(int)(f%12);
        f=(int)(f/12);
    }
}
class dm{
    private:
        float m,c;
        int t=0;
    public:
    void get(){
        cout<<"nEnter the distance in metres and centimeteres:t";
        cin>>m>>c;
    }
    void display(){
        cout<<"nThe distance stored is:t"<<m<<" meters "<<c<<" centimeters.";
    }   
    friend void ad(dm db);  
};
class db{
    private:
        float f,i;
        int t=1;
    public:
    void get(){
        cout<<"nEnter the distance in feet and inches:t";
        cin>>f>>i;
    }   
    void display(){
        cout<<"nThe distance stored is:t"<<i<<" feet "<<f<<" inches.";
    }
    friend void ad(dm db);
};
float round(float var){
    float value = (int)(var * 100 + .5); 
    return (float)value / 100; 
}
int main(){
dm dm1, dm2;
db db1, db2;
dm1.get();
db1.get();
dm2.add(dm1 db1);
db2.add(dm1 db1);   
dm2.display();
db2.display();
return 0;
}

我遇到以下错误:

variable or field 'ad' declared void
'mt' was not declared in this scope
'ft' was not declared in this scope

请提供帮助,谢谢

您的完整程序充满了语法和逻辑错误。首先阅读对象的传递方式以及C 中变量的范围是什么。然后,您将了解您遇到的错误。

我重新编写了代码:

    #include<iostream>
using namespace std;
class db;
class dm{
    float mt,cm;
    public:
    void getdata() 
      { 
        cout<<"CLASS DM: nn"; 
        cout<<"Enter Values for metres : "; 
        cin>>mt; 
        cout<<"Enter Values for centimetres: "; 
        cin>>cm; 
      } 
    void display()
    {
        cout<<"nTotal value of distance is : "<<mt<<" meters "<<cm<<" centimeters.";
    } 
    friend dm add(dm, db); 
    friend db add(db, dm);
};
class db{
    float ft,in;
    public:
    void getdata() 
      { 
        cout<<"CLASS DB: nn"; 
        cout<<"Enter Values for feet : "; 
        cin>>ft; 
        cout<<"Enter Values for inches: "; 
        cin>>in; 
      } 
    void display()
    {
        cout<<"nTotal value of distance is : "<<ft<<" feet "<<in<<" inches.";
    } 
    friend dm add(dm, db);
    friend db add(db, dm); 
};
dm add(dm a, db b){
        dm temp;
        temp.cm=a.cm + (a.mt*100) + (b.ft*30.48) + (b.in*2.54);
        temp.mt=(int)(temp.cm/100);
        temp.cm=(int)(temp.cm-(temp.mt*100));
        return (temp);
}
db add (db b, dm a){
        db temp;
        temp.in=b.in + (b.ft*12) + (a.mt*39.37) + (a.cm*2.54);
        temp.ft=(int)(temp.in/12);
        temp.in=(int)(temp.in-(temp.ft*12));
        return (temp);
}
int main(){
    dm dm1, dm2;
    db db1, db2;
    db1.getdata();
    dm1.getdata();
    dm2=add(dm1, db1);
    db2=add(db1, dm1);
    dm2.display();
    db2.display();
    return 0;
}

错误已解决,现在正常工作,谢谢大家的帮助