请教高手
在c++ primer 中有这样的讲述
1 改变类成员函数的定义用额外的参数this 指针来定义每个成员函数例如
inline void move( Screen* this, int r, int c )
{
if ( checkRange( r, c ) )
{
int row = (r-1) * this->_width;
this->_cursor = row + c - 1;
}
在这个成员函数定义中显式使用this 指针来访问类数据成员_width 和_cursor
2 改变每个类成员函数的调用加上一个额外的实参——被调用对象的地址例
myScreen.move( 2, 2)
被转化为
move( &myScreen, 2, 2 )
可是我按这样的思想去做(我用vc的编译器),根本编译不过去
说有错误,我想是不是vc编译器不能这样做
#include <iostream>
#include <string>
using namespace std;
class fun1
{
public:
int x1;
int x2;
fun1()
{
x1=0;
x2=0;
}
fun1(int x ,int y)
{
x1=x;
x2=y;
}
int calcusum(fun1 *this)////就是这句
{
int sum1 ;
sum1=this->x1+this->x2;
return sum1;
}
~fun1()
{}
};
int main()
{
return 0;
}
问题点数:0、回复次数:9Top
1 楼ttlb(__ttlb__ttlb__小鸟)回复于 2003-11-01 21:56:42 得分 0
upTop
2 楼qiyanchao(qiyanchao)回复于 2003-11-01 22:05:27 得分 0
up
;DTop
3 楼Beover1984(摇滚人生)回复于 2003-11-01 22:12:47 得分 0
还是用DEV-C++吧,标准Top
4 楼Fuzzier(Fuzzier)回复于 2003-11-01 22:19:10 得分 0
this是个keyword,怎么可以用来做自定义的变量名呢?
Top
5 楼robbie24(独行虾)回复于 2003-11-01 22:25:43 得分 0
... 孩子 ...他给你看的是伪码 ... 怎么可能去实现呢?
楼上也说过了,this是关键字...Top
6 楼qiyanchao(qiyanchao)回复于 2003-11-01 22:51:24 得分 0
NO
c++ primer 中这是真正的原码,不信你去查查
不是伪码Top
7 楼WindFroce(半支烟)回复于 2003-11-02 04:30:14 得分 0
按理说应该可以吧!fun1 *this 这句就是引用吗?
你的 main()函数里没代码,没有实际的对象是不可以的,生名个对项就可以了Top
8 楼langzi8818(┤天道酬勤┝爱老婆┦┷我是来学习滴┷)回复于 2003-11-02 09:12:09 得分 0
fun1 *this;
这里this被你作为一个参数了,再说类函数里的this是 编译器自己自动加上去的。:(Top
9 楼sunjx119(睿锐)回复于 2003-11-02 11:17:58 得分 0
楼上正解...Top




