帮忙转换一段C++代码(150分)

  • 主题发起人 主题发起人 viery
  • 开始时间 开始时间
V

viery

Unregistered / Unconfirmed
GUEST, unregistred user!
头文件:
// Vis.h

#ifndef Vis_h
#define Vis_h

#define VISIBLE 1

class Vis
{
protected:
int x_coord;
int y_coord;
int visible_p;

// Constructors
Vis() : x_coord(0), y_coord(0), visible_p(VISIBLE) {}
Vis(int x, int y, int is_visible) : x_coord(x), y_coord(y), visible_p(is_visible) {}
Vis(const Vis& copy);

public:

virtual ~Vis() {}

Vis& operator=(const Vis& vis);

int x(void) { return x_coord
} // Get x_coord
int x(const int new_x) { int old_x = x_coord
x_coord = new_x
return old_x
}
int y(void) { return y_coord
} // Get y_coord
int y(const int new_y) { int old_y = y_coord
y_coord = new_y
return old_y
}
void xy(const int new_x, const int new_y) { x_coord = new_x
y_coord = new_y
}
int visible(void) { return visible_p
} // Get visible_p
int visible(const int vis) { int old_vis = visible_p
visible_p = vis
return old_vis
}

virtual void Draw(void) = 0;
};



#endif



cpp文件:

// Vis.cpp
#include <iostream.h>
#include &quot;Vis.h&quot;


//#include <memcheck.h>


// Define Vis(const Vis& copy)
Vis::Vis(const Vis& copy)
{
*this = copy;
}

Vis& Vis::operator=(const Vis& vis)
{
x_coord = vis.x_coord;
y_coord = vis.y_coord;
visible_p = vis.visible_p;
return *this;
}



多谢了!
 
代码不长,在线等候。多谢!
 
提前一下。谢谢!
 
const
cVISIBLE = 1;

type
TVis = class
private
FX: Integer;
FY: Integer;
FVisible: Integer;
public
constructor Create;
procedure Assign(Source: TVis);
procedure Draw
virtual
abstract;

property X: Integer read FX write FX;
property Y: Integer read FY write FY;
property Visible: Integer read FVisible write FVisible;
end;


{ TVis }

procedure TVis.Assign(Source: TVis);
begin
if Source is TVis then
begin
FX := Source.FX;
FY := Source.FY;
FVisible := Source.FVisible;
end;
end;

constructor TVis.Create;
begin
// FX, FY自动初始化为0
FVisible := cVISIBLE;
end;
 
多谢lichengbin.

两个问题:
1,头文件中
int x(const int new_x) { int old_x = x_coord
x_coord = new_x
return old_x
}

这段代码是什么意思? 是set属性吗?

void xy(const int new_x, const int new_y) { x_coord = new_x
y_coord = new_y
}

这段呢?

2, 头文件中这个方法要声明一下吧?
virtual void Draw(void) = 0;

3,比较操作符你用assign来实现,那如果是一个小于操作符怎么实现? 比如:
bool operator<(const Vis &vs);
 
1.设置新值,返回旧值
Delphi中你可以先读X,再设置X,因此不需要另外再写个函数
2.这是一个纯虚函数,也就是Delphi中说的抽象方法。
不是已经声明过了么?
procedure Draw
virtual
abstract;
3.operator=是个拷贝赋值操作符的重载,不是==关系判断,Assign也就是起这个Clone作用。
何况人家类的定义里面本来就没有<操作符的重载,难道Delphi版非要多此一举?
 
lichengbin 强人。结帖再说。
 
lichengbin 请进, 再帮忙转一个方法,再开帖给发,谢谢!

头文件:
class EditText
{
public:
enum EditState { blank_field, default_field, repeat_field };

protected:
CString the_name;
CString the_label;
int the_label_x;
int the_label_y;
CString the_text;
CString the_mask;
CString the_default;
char the_echo;
int mandatory_p;
int trimmed_p;
int forcedupper_p;
int editable;
int visible;
EditState the_state;
}

主文件draw方法:

void EditText::Draw(void)
{
if (visible)
{
WriteStr(the_label, the_label_y, the_label_x);

CString edit_field(' ', the_mask.Length());
CString *contents;
switch(the_state)
{
case blank_field :
contents = new CString(&quot;&quot;);
break;
case default_field :
if (the_echo)
contents = new CString(the_echo, the_default.Length());
else
contents = new CString(the_default);
break;
case repeat_field :
if (the_echo)
contents = new CString(the_echo, the_text.Length());
else
contents = new CString(the_text);
break;
}


if (edit_field.Length() != 0)
{
WriteStr(edit_field, y_coord, x_coord);
}
Input((char*)the_mask, (char*)(*contents), my_text, the_echo, y_coord, x_coord, mandatory_p, trimmed_p, forcedupper_p)


if (contents)
delete contents
// Free up memory allocated by contens
}
}
 
to 楼主
不会再有人来了,分给错了。
是不是按字数给分?
看来我没分了
 
分配了分数我才发现给错了。

我已经和版主反映了这个问题。看看有什么办法没有。
非常不好意思。实在不行,我再开一贴,给lichengbin结分。
 

Similar threads

I
回复
0
查看
843
import
I
I
回复
0
查看
632
import
I
I
回复
0
查看
2K
import
I
I
回复
0
查看
3K
import
I
后退
顶部