| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 582 人关注过本帖
标题:帮调试程序
只看楼主 加入收藏
sailer
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2005-10-12
收藏
 问题点数:0 回复次数:5 
帮调试程序

我的这个程序是关于重载的---运算符,也有友元函数。可是友元函数出了问题。 能告诉我关于++a--++和输出的X值的由来吗? #include<stdio.h> class CA { long x; public: CA(long m) {x=m;} void show() { printf("%d x=%d\n",number,x);} CA& operator++(); CA operator++(int); friend CA operator --(CA &,int); static int number; }; CA & CA::operator ++ () { ++x; printf("%d.CA::operator++();x=%d\n",number++,x); return *this; CA CA::operator ++ (int) { printf("%d.CA::operator++(int);x=%d\n",number++,x); CA temp(*this); x++; return temp; } CA operator--(CA& r,int)

{ printf("%d.CA::operator--(CA &r ,int);%d\n",number++,x); CA temp(*this); x--; return temp; } int CA::number=1; void main() { CA a(1); a.operator ++ (1); a.operator ++ (); ++a--++; a.show (); } 错误是::\Program Files\Microsoft Visual Studio\MyProjects\12\12.cpp(20) : error C2601: '++' : local function definitions are illegal E:\Program Files\Microsoft Visual Studio\MyProjects\12\12.cpp(27) : error C2601: '--' : local function definitions are illegal E:\Program Files\Microsoft Visual Studio\MyProjects\12\12.cpp(27) : fatal error C1903: unable to recover from previous error(s); stopping compilation Error executing cl.exe.

搜索更多相关主题的帖子: 调试 
2005-10-13 22:30
sailer
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2005-10-12
收藏
得分:0 
我很急啊,帮我看看啊,多谢大家的帮助啊!!

希望大家多多配合他人,多多帮助他人。 支持国家的 产品,尽量不买外国货。
2005-10-13 22:37
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 

#include<stdio.h> class CA { long x; public: CA(long m) {x=m;} void show(){ printf("%d x=%d\n",number,x);} CA& operator++(); CA operator++(int); friend CA operator--(CA &,int); static int number; };

CA & CA::operator ++ () { ++x; printf("%d.CA::operator++();x=%d\n",number++,x); return *this; } CA CA::operator ++ (int) { printf("%d.CA::operator++(int);x=%d\n",number++,x); CA temp(*this); x++; return temp; }

CA operator--(CA& r,int) { printf("%d.CA::operator--(CA &r ,int);%d\n",r.number++,r.x); r.x--; return r; } int CA::number=1;

int main(){ CA a(1); a.operator ++ (1); a.operator ++ (); ++a--++; a.show (); getchar(); } 黑体处为修改处,程序没有仔细看。不过错误是改没有了,不知道符不符你的要求 主要是我太忙了


http://kongfuziandlife. http://codeanddesign.
2005-10-14 12:53
sailer
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2005-10-12
收藏
得分:0 
#include&lt;stdio.h&gt;
 class CA
    { long x; //私有的成员对应的运算符全局函数声明为友元函数
   public:   CA(long m){x=m;}
   void Show(){  printf("%d x=%d\n",num,x);}
           CA&amp; operator++();             //++v型的前置运算符成员函数
     CA  operator++(int);           //v++型的后置运算符成员函数
   friend  CA  operator--(CA&amp;,int);        //v--型的后置运算符友员函数
   static  int num;
 };
 CA&amp; CA::operator++()  //定义++v前置自增运算符函数, 返回CA&amp;型对象引用。
 {   ++x;                         //this所指的的对象已经增1的变化
   printf("%d.CA::operator++();x=%d\n",num++,x);
   return *this;                       //函数协调地返回变动后的值
 }
    CA CA::operator++(int) //定义v++后置自增运算符函数, 返回CA型数值对象。
 {   printf("%d.CA::operator++(int);x=%d\n",num++,x);
  CA temp(*this);                   //设置临时对象保存原先的结果
  x++;                          //this所指的的对象已经增1的变化
  return temp;                      //函数返回保存原先结果的临时对象
 }
 CA operator--(CA&amp; r,int) //定义v--后置自减运算符全局函数,返回CA型数值对象。
 {   printf("%d.operator--(CA&amp;,int);x=%d\n",CA::num++,r.x);
     CA temp(r);                   //设置临时对象保存原先结果
  r.x--;                        //引用r所指的内存已经减1的变化
  return temp;                   //函数返回保存原先结果的临时对象
 }
 int CA::num=1;
 void main()                   /*程序运行输出结果*/
 {   CA a(1);                  /*  1.CA::operator++(int);x=1  */
        a.operator++(1);            /*  2.CA::operator++();x=3    */
  a.operator++();             /*  3.operator--(CA&amp;,int);x=3  */
  ++a--++;                  /*  4.CA::operator++(int);x=3  */
        a.Show();                  /*  5.CA::operator++();x=4   */
 }

希望大家多多配合他人,多多帮助他人。 支持国家的 产品,尽量不买外国货。
2005-10-18 00:01
sailer
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2005-10-12
收藏
得分:0 
你好啊,谢谢你 啊,在帮我看看啊
你好啊!

请你再帮我看看啊

4楼是我想得到的结果程序,我的和他的没有什么不同啊,我的怎么不对啊?
和你的结果也不一样啊,你能告诉我原因吗

希望大家多多配合他人,多多帮助他人。 支持国家的 产品,尽量不买外国货。
2005-10-18 00:09
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 
不好意思没有注意你的回复,
我试了一下,我的程序结果和四楼的是相同的。我用的是devc++
你的错误我已经给你指出了
operator(r,....)
你只传了一个类对象进来,但是你却直接使用它的私有数据成员x这样恐怕不行最少也要是用this.x

http://kongfuziandlife. http://codeanddesign.
2005-10-21 14:04
快速回复:帮调试程序
数据加载中...
 
   



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

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