在下面的程序中,我在下面的行中得到2个错误。
r = sum(p,q); //Function sum should have a prototype.
r = sum(p,q); //Cannot convert int to complex
请告知代码中的更改。
注意:我必须通过传递要添加的复杂类的对象来执行代码,并且添加应该返回一个复数。
#include<iostream.h>
#include<conio.h>
class Complex
{
private:
int real;
int imag;
public:
void getNo()
{
cout<<"Enter real part : "<<endl;
cin>>real;
cout<<"Enter imaginary part : "<<endl;
cin>>imag;
}
void showNo()
{
cout<<real<<"+"<<imag<<"i";
}
Complex sum(Complex, Complex);
};
Complex Complex :: sum(Complex c1, Complex c2)
{
Complex a;
a.real = c1.real + c2.real;
a.imag = c1.imag + c2.imag;
return a;
}
void main()
{
clrscr();
Complex p,q,r,s;
p.getNo();
q.getNo();
cout<<endl<<"First complex number is : ";
p.showNo();
cout<<endl<<"Second complex number is : ";
q.showNo();
r = sum(p,q);
cout<<"Addtion of the complex no is : ";
r.showNo();
getch();
}
答案 0 :(得分:1)
为了您的目的,&#34;总和&#34;功能不应该在&#34; Complex&#34;类。这里有点改变了代码:
#include <iostream>
#include <conio.h>
using namespace std;
class Complex
{
public:
int real;
int imag;
void getNo ()
{
cout << "Enter real part : " << endl;
cin >> real;
cout << "Enter imaginary part : " << endl;
cin >> imag;
}
void showNo ()
{
cout << real << "+" << imag << "i";
}
};
Complex sum (Complex c1, Complex c2);
int main ()
{
//clrscr ();
Complex p, q, r, s;
p.getNo ();
q.getNo ();
cout << endl << "First complex number is : ";
p.showNo ();
cout << endl << "Second complex number is : ";
q.showNo ();
r = sum (p, q);
cout << endl << "Addtion of the complex no is : ";
r.showNo ();
getch ();
}
Complex sum (Complex c1, Complex c2)
{
Complex
a;
a.real = c1.real + c2.real;
a.imag = c1.imag + c2.imag;
return a;
}
修改强>
类中的函数需要类的实例(对象)。 只需 CAN 执行此操作:
p.getNo();
t.sum();
myComplexNum.getReal();
但在您的代码中,您尝试执行此操作不能:
a = getNo();
b = sum();
getReal();
另外, CAN 可以像其他答案一样使功能静态。 静态函数和变量不需要实例。主叫:
// We have 1 Box named b
Box b;
b.setHeight(5);
b.setWidth(3);
b.setDepth(3);
//ClassName::StaticVariable;
int c1 = Box::count; // returns 1
//ClassName::StaticFunction(Parameters);
int c2 = Box::getCount(); // returns 1
答案 1 :(得分:0)
在类中声明函数(方法)时,可以在此类(对象)的实例上调用此方法。 在给定的代码中函数Complex sum(Complex c1,Complex c2);应该在Complex类型的对象上调用。
但是由于函数没有改变对象内部的任何东西,而是创建一个新对象并返回它,你应该更好地声明一个静态方法。
static Complex sum(Complex, Complex);
在这种情况下,您可以在没有现有Complex对象的情况下调用该函数。 语法如下:
r = Complex::sum(a, b);