C++ 从派生到基c++;
代码most有1个基类、2个派生类和2个虚函数。在第一个虚函数(在第一个派生类中重新定义)中,我必须输入2个值来求和,或者只输入1个值以供以后使用;在第二个虚函数(在第二个派生类中重新定义)中,我需要输入2个值以进行减法运算,或者只输入1个值以与以后将要使用的值相乘或相除。我在加法或减法时没有问题,问题是当我尝试乘法或除法时C++ 从派生到基c++;,c++,class,inheritance,C++,Class,Inheritance,代码most有1个基类、2个派生类和2个虚函数。在第一个虚函数(在第一个派生类中重新定义)中,我必须输入2个值来求和,或者只输入1个值以供以后使用;在第二个虚函数(在第二个派生类中重新定义)中,我需要输入2个值以进行减法运算,或者只输入1个值以与以后将要使用的值相乘或相除。我在加法或减法时没有问题,问题是当我尝试乘法或除法时 #include<iostream> #include<cstring> using namespace std; int op; int oo
#include<iostream>
#include<cstring>
using namespace std;
int op;
int oopp;
class base
{
protected:
float a,b,c;
public:
void calculo();
void imprimir();
virtual void datos1(){};
virtual void datos2(){};
};
class derivada1:public base
{
public:
void datos1();
};
class derivada2:public base
{
public:
void datos2();
};
void derivada1::datos1()
{
if(op==1)
{
cout<<"a = ";
cin>>a;
cout<<"b = ";
cin>>b;
}
if(op==3)
{
cout<<"a = ";
cin>>a;
}
}
void derivada2::datos2()
{
if(op==2)
{
cout<<"a = ";
cin>>a;
cout<<"b = ";
cin>>b;
}
if(op==3)
{
cout<<"b = ";
cin>>b;
}
}
void base::calculo()
{
if(op==1)
{
c=a+b;
}
if(op==2)
{
c=a-b;
}
if(op==3)
{
if(oopp==4)
{
c=a*b;
}
if(oopp==5)
{
c=a/b;
}
}
}
void base::imprimir()
{
if(op==1)
{
cout<<"c = "<<c<<endl;
}
if(op==2)
{
cout<<"c = "<<c<<endl;
}
if(op==3)
{
if(oopp==4)
{
cout<<"c = "<<c<<endl;
}
if(oopp==5)
{
cout<<"c = "<<c<<endl;
}
}
}
int main()
{
base *p;
derivada1 a;
derivada2 b;
cout<<"op = ";
cin>>op;
//1 sum
//2 substraction
//3 multiply or divide
switch(op)
{
case 1:
p = &a;
p->datos1();
p->calculo();
p->imprimir();
break;
case 2:
p = &b;
p->datos2();
p->calculo();
p->imprimir();
break;
case 3:
cout<<"oopp = ";
cin>>oopp;
switch(oopp)
{
case 4:
p = &a;
p->datos1();
p = &b;
p->datos2();
p->calculo();
p->imprimir();
break;
case 5:
p = &a;
p->datos1();
p = &b;
p->datos2();
p->calculo();
p->imprimir();
break;
default:
cout<<"bye!"<<endl;
break;
}
default:
cout<<"bye!"<<endl;
break;
}
}
#包括
#包括
使用名称空间std;
int op;
int-oopp;
阶级基础
{
受保护的:
浮子a、b、c;
公众:
void calculo();
无效无效();
虚空datos1(){};
虚空datos2(){};
};
第1类:公共基础
{
公众:
void datos1();
};
第2类:公共基础
{
公众:
void datos2();
};
void derivida1::datos1()
{
如果(op==1)
{
库塔;
库特布;
}
如果(op==3)
{
库塔;
}
}
void derivida2::datos2()
{
如果(op==2)
{
库塔;
库特布;
}
如果(op==3)
{
库特布;
}
}
void base::calculo()
{
如果(op==1)
{
c=a+b;
}
如果(op==2)
{
c=a-b;
}
如果(op==3)
{
如果(oopp==4)
{
c=a*b;
}
如果(oopp==5)
{
c=a/b;
}
}
}
void base::imprimir()
{
如果(op==1)
{
你使用的输入是什么?到底错在哪里?你期望什么?我期望在要求程序进行乘法或除法时得到一个答案,因为当我用对象b调用calculo时,它只使用来自datos2的输入,而不是来自DATOS1的输入。例如,如果op的输入是3,那么oopp的输入是4,它首先保存“a”对于对象a,然后对对象b使用“b”,但当我尝试同时使用对象b和calculo时,就好像我从未对“a”输入过什么意思?我所能说的就是后退一步,重新思考处理作业的方式。在纸上写下你对工作的看法,然后再尝试一些代码来实现不要使用全局变量,而是传递参数。不要重复使用指针到对象,将它们分开,当对象需要交互时,考虑是否需要将一个对象传递到另一个对象,或者如果你能更好地处理与多个对象一起工作的自由函数。我不知道你的任务是什么,所以我不能真正提供。不止这些,祝你好运!