注册 登录
编程论坛 VC++/MFC

简单的关于运算符重载的程序 求高手解答

多嘴鸟 发布于 2012-12-22 20:01, 431 次点击
#include "stdafx.h"\\将运算符重载为类的成员函数
#include <iostream>
using namespace std;
class Complex
{
private:
    double r;
    double i;
public:
     Complex(double x=0.0,double y=0.0)
    {
        r=x;
        i=y;
    }
    Complex operator+(Complex &c);
    {
        Complex t;
        t.r=r+c.r;
        t.i=i+c.i;
        return t;

    }
    void show()
    {
        cout<<"("<<r<<","<<i<<")";

    }
};
int main()
{
    Complex a(10,20.0),b(30.0,40.0),c;
    c=a+b;
    a.show;
    cout<<'+';
    b.show;
    cout<<'=';
    c.show();
    cout<<endl;
    return 0;

}
调试结果为
1>f:\visual studio 2012\consoleapplication32\consoleapplication32\consoleapplication32.cpp(20): error C2059: 语法错误:“{”
1>f:\visual studio 2012\consoleapplication32\consoleapplication32\consoleapplication32.cpp(20): error C2334: “{”的前面有意外标记;跳过明显的函数体
1>f:\visual studio 2012\consoleapplication32\consoleapplication32\consoleapplication32.cpp(37): error C3867: “Complex::show”: 函数调用缺少参数列表;请使用“&Complex::show”创建指向成员的指针
1>f:\visual studio 2012\consoleapplication32\consoleapplication32\consoleapplication32.cpp(39): error C3867: “Complex::show”: 函数调用缺少参数列表;请使用“&Complex::show”创建指向成员的指针
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

2 回复
#2
yuccn2012-12-22 20:25
#include "stdafx.h"\\将运算符重载为类的成员函数
 #include <iostream>
 using namespace std;
 class Complex
 {
 private:
     double r;
     double i;
 public:
      Complex(double x=0.0,double y=0.0)
     {
         r=x;
         i=y;
     }
     Complex operator+(Complex &c)// 这个地方你打多了一个分号;
     {
         Complex t;
         t.r=r+c.r;
         t.i=i+c.i;
         return t;
 
    }
     void show()
     {
         cout<<"("<<r<<","<<i<<")";
 
    }
 };
 int main()
 {
     Complex a(10,20.0),b(30.0,40.0),c;
     c=a+b;
     a.show(); // 函数调用要加上()的
     cout<<'+';
     b.show();
     cout<<'=';
     c.show();
     cout<<endl;
     return 0;
 
}
#3
不玩虚的2012-12-25 00:43
你写的是实现复数相加,还是别的?
1