回 帖 发 新 帖 刷新版面

主题:[讨论]建一个类的问题,大家帮我看看为什么报错。。。多谢!!!

关于建一个类的问题,求助!!
我第一次建类。。。
要建一个半整数类,就是说只存在n/2, n是整数。下面是我的类:

#include <iostream>
#include <cmath>
#include <string>
class halfint{
private:
    int numerator;
    int denominator;

public:
    //CONSTRUCTORS
    halfint (int, int);
    halfint (int);
   
    //COPY CONSTRUCTOR
    halfint (halfint&);
   
    //EXAMINE OBJECTS
    void display();
   
    //OPERATIONS
    void operator = (halfint);
    void set(halfint);
   
    halfint operator + (halfint);
    void operator += (halfint);
    halfint operator - (halfint);
    bool operator >= (halfint);
    halfint invert (halfint);
   
   
    int gettwice (halfint);
};
//CONSTRUCTORS
halfint :: halfint (int n, int d){
    numerator = n;
    denominator = d;
}
halfint :: halfint (int whole){
    numerator = whole * 2;
    denominator = 2;
}

void halfint :: set(halfint h){
    this->numerator = h.numerator;
    this->denominator = h.denominator;
}

//COPY CONSTRUCTOR
halfint :: halfint (halfint &h){
    this->numerator = h.numerator;
    this->denominator = h.denominator;
}

void halfint :: display(){
    if (this->numerator % 2 == 0){
        this->numerator /= 2;
        this->denominator /= 2;
        std::cout << this->numerator <<"\n";
    }
    else{
        std::cout << this->numerator << "/" << this->denominator<<"\n";
    }
}
void halfint :: operator = (halfint h){
    this->numerator = h.numerator;
    //this->
    this->denominator = h.denominator;
}
halfint halfint :: operator + (halfint h){
    halfint sum(0);
    sum.numerator = this->numerator + h.numerator;
    return sum;
}
halfint halfint :: operator - (halfint h){
    halfint diff(0);
    diff.numerator = this->numerator - h.numerator;
    return diff;
}
bool halfint :: operator >= (halfint h){
    bool grteq;
    halfint dummy(0);
    halfint dummyh(0);
    dummy.numerator = this->numerator;
    dummyh.numerator = h.numerator;
    if (dummy.numerator >= dummyh.numerator) {
        grteq = true;
    }
    else {
        grteq = false;
    }
    return grteq;
}
   
halfint halfint :: invert (halfint h){
    if (h.numerator < 0) {
        this->numerator = (-1)*h.numerator;
    };
    return *this;
}
halfint absolute (halfint h){
    halfint zero(0);
    halfint dummy(0);
    if (zero >= h) {
        dummy.invert(h);
    }
    return dummy;
}
halfint maximum (halfint h1, halfint h2){
    if (h1 >= h2) {
        return h1;
    }
    else {
        return h2;
    }
}
void halfint :: operator += (halfint h){
    this->numerator += h.numerator;
}
int halfint :: gettwice (halfint h){
    return h.numerator;
}
int getnum (halfint dummy){
    int n;
    n = dummy.gettwice(dummy);
    return n;
}
halfint assign (int num, int denom){
    halfint h1(num, denom);
    return h1;

下面是我的main:

#include <iostream>
#include <cmath>
#include <string>
#include "halfint.h"
using namespace std;
int main (int argc, char * const argv[]) {
    halfint a(-3, 2);
    halfint b(8);
    halfint c(0);
    (a+b).display();
    maximum(a,b).display;
    c,set(a);
//从这里开始都报错。。。貌似所有return的值都不能传递到我的object上  
    c=a;
    c = a+b;
    c.set(a+b);
    c = maximum(a,b);
    return 0;
}

有人知道怎么办吗??谢谢啦!

回复列表 (共3个回复)

沙发

到处都是打字打错,楼主还是把代码好好的整理一下吧。

板凳

c,set(a)是怎么回事?
赋值操作符的重载,请参看韩度有关资料http://baike.baidu.com/view/1033032.htm第四节内容

3 楼

回一楼:有很多打字打错吗。。。貌似只有那个c,set(a)打错了,“,”应该是“.” 其他我觉得没有打错字的啊。。。我承认没有加足够的comment

回二楼:那个是打错了,应该是c.set(a), 问题解决了,不是重载的问题。

谢谢二位楼上抽时间读我的代码

我来回复

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