错误 - 复数:: sum的多重声明

时间:2016-07-12 15:27:21

标签: c++ c++11

编译获取错误时错误 - 复数:: 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错误的多个声明。我使用的是turbo c ++ 4.0版本。

2 个答案:

答案 0 :(得分: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();
                    ^^^

答案 1 :(得分:0)

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

#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;
}
相关问题