注册 登录
编程论坛 C++教室

大家帮我看一下这个程序哪里有问题

雪凝·夜殇 发布于 2015-06-30 20:33, 737 次点击
设计个计算器类Calculator,它只有一个用于计数的数据成员count。该计算器的有效计数范围是0~65535,实现计数器的前自增,后自增,前自减,后自减,两个计数器想加减等运算。
下面是我写的程序,但是总是“有一个无法解析的外部xx”,哪里有问题阿???
#include<iostream>
using namespace std;
class Calculator{
private:
    int count;
public:
    Calculator(int i=0){count=i;}
    Calculator & operator++();
    Calculator & operator++(int);
    Calculator & operator--();
    Calculator & operator--(int);
    Calculator operator+(Calculator a);
    Calculator operator<<(Calculator a);
    Calculator operator>>(Calculator a);
};
Calculator & Calculator::operator++(){
    ++count;
    return *this;
}
Calculator & Calculator::operator++(int){
    count++;
    return *this;
}
Calculator & Calculator::operator--(){
    --count;
    return *this;
}
Calculator & Calculator::operator--(int){
    count--;
    return *this;
}
Calculator Calculator::operator+(Calculator a){return Calculator(count+a.count);}
Calculator Calculator::operator<<(Calculator a)
{cout<<count<<endl;
return count;}
Calculator Calculator::operator>>(Calculator a)
{cin>>count;
return count;}
 
void main()
{
    int a;
    Calculator b;
    Calculator sum;
    Calculator c;
    cout<<"请输入数字: "<<endl;
    cin>>a;
    if(a>65535||a<0)
    {cout<<"该数字超出该计数器的有效计数范围!"<<endl;}
    else{
    cout<<"请再次输入该数字: "<<endl;
     b.operator>>(b);
    ++b;
    cout<<"前自增的结果是:"<<endl;
     b.operator<<(b);
    b++;
    cout<<"后自增的结果是:"<<endl;
    b.operator<<(b);
    --b;
    cout<<"前自减的结果是:"<<endl;
    b.operator<<(b);
    b--;
    cout<<"后自减的结果是:"<<endl;
    b.operator<<(b);
    cout<<"请输入要加的数字:"<<endl;
    c.operator>>(c);
    sum=c + b;
    sum.operator<<(sum);}
}
3 回复
#2
rjsp2015-07-01 08:36
哪里有问题?
问题要你描述出来,解决手段是别人给的。

另外,从你代码上看,你应该回头重修,基本上一无是处,连基本的 后++ 是什么意思都不知道。
假设 int i = 0;
i++ 这是个表达式,这个表达式的值是 i 原先的值,副作用(side effect)是 i增加了1。
而像  b.operator>>(b); 你自己不觉得搞笑、别扭?
#3
夏如风2015-07-01 12:11
好多错误,建议多读读书
#4
yangfrancis2015-07-01 14:45
#include<iostream>
using namespace std;
class Calculator
{
private:
    int count;
public:
    Calculator(){count=0;}
    Calculator(int x){count=x;}
    friend ostream & operator<<(ostream&os,const Calculator&c);
    int Get(){return count;}
};
ostream&operator<<(ostream&os,Calculator&c)
{
    os<<c.Get();
    return os;
}
int main()
{
    Calculator example(66);
    cout<<example;
    return 0;
}
输出重载
1