| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 591 人关注过本帖
标题:关于建一个类的问题,求助!!
取消只看楼主 加入收藏
cke1031
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-6-12
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
关于建一个类的问题,求助!!
我第一次建类。。。
要建一个半整数类,就是说只存在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;
 //从这里开始都报错。。。貌似所有return的值都不能传递到我的object上  
    c=a;
    c = a+b;
    c.set(a);
    c = maximum(a,b);
    return 0;
}

有人知道怎么办吗??谢谢啦!
搜索更多相关主题的帖子: void class private display include 
2010-06-12 11:35
cke1031
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-6-12
收藏
得分:0 
哦,我搞错了,c.set(a)可以,但是c.set(a+b)就会报错。。。
2010-06-12 11:37
cke1031
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-6-12
收藏
得分:0 
解决了
虽然我不知道为什么,但是只要把copy constructor 的参数设为 const,就都解决了。。。
2010-06-12 22:02
快速回复:关于建一个类的问题,求助!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018641 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved