错误 - 复杂::总和的多个声明

Error- Multiple declaration for complex::sum

本文关键字:声明 和的 复杂 错误      更新时间:2023-10-16

编译时得到错误错误 - 复杂::sum的多个声明。

#include<iostream.h>
#include<conio.h>
#include<string.h>
class complex
{
    float a,b;
public:
    complex (float m,float n)
    {
        a=m;
        b=n;
    }
    complex sum (complex complex);
    void show (complex);
};
complex complex::sum (complex c1 complex c2)
{
    complex c3;
    c3.a=(c1.a)+(c2.a);
    c3.b=(c1.b)+(c2.b);
    return c3;
}
void complex::show (complex c3)
{
    cout<<c.a<<"+"<<c.b<<"i";
}
int main()
{
    clrscr();
    complex c1,c2,c3 ;
    c1=complex(4.2,9.3);
    c2=complex(12.5,6.5);
    c3=sum(c1,c2);
    cout<<"c1="<<c1.show;
    cout<<"c2="<<c2.show;
    cout<<"c3="<<c3.show;
    getch();
    return 0;
}

我应该怎么做才能删除complex::sum错误的多重声明。我正在使用涡轮增压 c++ 4.0 版本。

您需要在此声明中使用逗号

complex sum (complex, complex);
                   ^^

因为该函数使用两个参数。

此外,必须适当地定义函数

complex complex::sum (complex c1, complex c2)
                               ^^^
{
    complex c3( c1.a + c2.a, c1.b + c2.b );
    return c3;
}

写起来会更正确

/* const */ complex complex::sum ( const complex &c1, const complex &c2 ) const
{
    complex c3( c1.a + c2.a, c1.b + c2.b );
    return c3;
}

考虑到类没有默认构造函数。

函数 show 应该声明为静态或不带参数,例如

void show() /*const*/;

并且该函数应该像

cout<<"c1="<<c1.show();
                    ^^^
cout<<"c2="<<c2.show();
                    ^^^

终于得到了输出。 这是工作代码

#include<iostream.h>
#include<conio.h>
#include<string.h>
class complex
{
    float a,b;
public:
    complex (float m,float n)
    {
    a=m;
    b=n;
    }
    complex sum (complex, complex);
    void show (complex);
};
complex complex::sum ( complex c1,complex c2)
{
    complex c3(c1.a+c2.a, c1.b+c2.b);
    return c3;
}
void complex::show (complex c3)
{
    cout<<c3.a<<"+"<<c3.b<<"i";
}
int main()
{  clrscr();
   float p,q,r,s;
   cin>>p>>q>>r>>s;
   complex c3(c3.sum(complex(p,q),complex(r,s)));
    cout<<"c3=";
    c3.show(c3);
    getch();
    return 0;
}