C++中的友元函数显示"variable or feild declared void error"
friend function in C++ shows "variable or feild declared void error"
我正在为我的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;
}
错误已解决,现在正常工作,谢谢大家的帮助
相关文章:
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- 模式"allocate memory or use existing data"
- N-API include an .so or dll
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 将 OR 逻辑运算符从 C++ 转换为 Fortran
- CPP 中的瓦尔格林德和记忆泄漏:"Conditional jump or move depends on uninitialised values"
- 我如何将 OR 与 if 语句一起使用字符串
- 将 if 语句中的字符与 or 进行比较
- Google Or-Tools Glop:如何创建指向 const 对象的指针数组?
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- "No such file or directory" C++标头问题
- 处理 std::enable_if<...中谓词的逻辑"OR">
- C++ 虽然语句不适用于字符串和"or"
- 我在 #include < bits/stdc++h.> 放置时出错"No such file or directory"
- Python Bitwise OR
- 逻辑'double free or corruption (fasttop)'错误
- C++中的友元函数显示"variable or feild declared void error"