添加复数时出错

时间:2017-09-20 14:26:15

标签: c++

在下面的程序中,我在下面的行中得到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();
}

2 个答案:

答案 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);