c java 类成员,C类成员函数不修改成员

我从一个基础 Shape 类创建了一个派生的 Octagon 类(由Stroustrup..i编写'm using programming principles and practice). The constructor and other methods seem to be fine except that calling the function that modifies the class member doesn' t更改任何内容 .

这是我写的派生类(在基类接口之后):

class Octagon : public Shape

{

public:

Octagon(Point centre, int side_length);

double cot(double x) const{return (cos(x) / sin(x));}

void draw_lines() const;

void set_side(int x) { s_l = x; } //am i missing something?

double rad(int side){return (0.5*side*cot(PI / 8));}

private:

int s_l;

};

Octagon::Octagon(Point centre, int side_length)

:s_l( side_length )

{

for (int ang = 22.5; ang <= 337.5; ang += 45)

{

add(Point{ int(centre.x + rad(s_l) * cos(ang*PI / 180)),

int(centre.y - rad(s_l) * sin(ang*PI / 180)) });

};

}

当我在main函数中调用它时, set_side(int) 函数实际上没有做任何事情......

int main()

{

Simple_window win{ Point{100,100}, 1200, 900, "window" }; //Simple_window class

//designed by Stroustrup to display Shape objects

Octagon oct{ Point(600,450), 100};

oct.set_color(Color::black);

oct.set_side(20); //supposed to change the side length from 100 to 20

//but it stays at 100 when i run the program

win.attach(oct); //attaches Shape object to Simple_window

win.wait_for_button();

}

我不知道这是否是必要的,但这是Stroustrup使用FLTK GUI库设计的基础 Shape 类 .

class Shape { // deals with color and style, and holds sequence of lines

public:

void draw() const; // deal with color and draw lines

virtual void move(int dx, int dy); // move the shape +=dx and +=dy

void set_color(Color col) { lcolor = col; }

Color color() const { return lcolor; }

void set_style(Line_style sty) { ls = sty; }

Line_style style() const { return ls; }

void set_fill_color(Color col) { fcolor = col; }

Color fill_color() const { return fcolor; }

Point point(int i) const { return points[i]; } // read only access to points

int number_of_points() const { return int(points.size()); }

virtual ~Shape() { }

protected:

Shape();

virtual void draw_lines() const; // draw the appropriate lines

void add(Point p); // add p to points

void set_point(int i,Point p); // points[i]=p;

private:

vector points; // not used by all shapes

Color lcolor; // color for lines and characters

Line_style ls;

Color fcolor; // fill color

Shape(const Shape&); // prevent copying

Shape& operator=(const Shape&);

};

顺便说一句, draw_lines() 由 draw() 调用,由显示引擎调用 . (我逐章跟随这本书,所以我还没有达到他完全讨论这一点的章节) .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值