回 帖 发 新 帖 刷新版面

主题:哪位高手帮忙改改错误啊,谢谢了!!

#include<iostream.h> 

class SimpleCircle 

private: 
int *itsRadius; 
public: 
SimpleCircle(); 
SimpleCircle(int a); 
SimpleCircle(SimpleCircle &b); 
~SimpleCircle(); 
void SetRadius(int a); 
void Increment(); 
SimpleCircle &operator=(SimpleCircle &b); 
SimpleCircle&operator-(SimpleCircle &b); 
int getitsRadius() 

return *itsRadius; 

}; 

void SimpleCircle::Increment() 

*itsRadius++; 


void SimpleCircle::SetRadius(int a) 

*itsRadius=a; 


SimpleCircle::SimpleCircle() 

itsRadius=new int; 


SimpleCircle::SimpleCircle(int a) 

itsRadius=new int; 
*itsRadius=a; 


SimpleCircle::SimpleCircle(SimpleCircle &b) 

this->itsRadius=b.itsRadius; 


SimpleCircle::~SimpleCircle() 

delete itsRadius; 


SimpleCircle&SimpleCircle::operator=(SimpleCircle &b) 

if(this==&b) 
return * this; 
else 
b.itsRadius=this->itsRadius; 


SimpleCircle&SimpleCircle::operator-(SimpleCircle &b) 

int c=this->itsRadius-b.itsRadius; 


void main() 

SimpleCircle S1(9); 
S1.Increment(); 
SimpleCircle S2(15); 
S2.Increment(); 
S1.SetRadius(15); 
SimpleCircle S3; 
S3=S2-S1; 
cout<<"S3="<<S3.getitsRadius()<<endl; 


题目是要创建2个SimpleCircle对象,一个使用默认构造函数,一个设定值为9 
对第一个对象调用SetRadius方法,设定半径为15 
分别对两个对象调用Increment,然后打印他们的值 
创建第三个对象,将前两个对象做减法,结果赋给第三个对象

回复列表 (共3个回复)

沙发

#include "stdafx.h"
#include<iostream> 
using namespace std;

板凳

你的这里都没有返回值啊!
SimpleCircle&SimpleCircle::operator-(SimpleCircle &b) 

int c=this->itsRadius-b.itsRadius; 
}

3 楼

好多错我哈!!
1.Increment()中,应为(*itsRadius)++
2.operator=中,应为*itsRadius=*b.itsRadius;因为析构函数中有delete,所以应传值而不是地址。另外最好加个return *this;在最后
3.operator-中,返回值不要引用,也就是删掉operator前边的&,因为你的c不是全局变量哈,最后还要加个return c;或者干脆改为return SimpleCircle(*itsRadius-*b.itsRadius);

我来回复

您尚未登录,请登录后再回复。点此登录或注册