gpt4 book ai didi

c++ - 使用继承在类之间传递非静态变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:00:17 25 4
gpt4 key购买 nike

我正在研究 UI 作为一个投资组合项目,在继承方面遇到了一些麻烦。我面临的问题是:我有两个类,R_GUI,我在其中绘制表单,Button,我在其中绘制按钮。我希望按钮位于 FORM 内。我将 FORM 位置存储为 form_x 和 form_y。这是我的两个类(class):

class R_GUI 
{

private:


bool get_pos_only_once;
bool move_form;

public:
int form_x, form_y;
int form_height, form_width;
int handle_bar_y;

inline void Form(int pos_x, int pos_y, int height, int width);
//inline void Button(int id, string ButtonText, int pos_x, int pos_y);

inline void Update_form(void);

inline void UPDATE(void);

inline ~R_GUI( );
inline R_GUI( )
{
d3dInit();
get_pos_only_once = false;
move_form = false;
form_x = 0;
form_y = 0;
handle_bar_y = 40;
}
};

和按钮类:

class Button: public R_GUI
{

private:
int b_form_x, b_form_y;
int b_handle_y;
int button_width, button_height;

public:
inline void Draw(string ButtonText, int b_pos_x, int b_pos_y);
Button()
{

b_form_x = R_GUI::form_x;
b_form_y = R_GUI::form_y;
b_handle_y = 20;

button_width = 90;
button_height = 35;
}

~Button();



};

如您所见,我正在尝试为 b_form_x 提供 form_x 的值(这是来自 R_GUI 的变量)。 form_x 有一个值,在 Form( ) 中给出;:

inline void R_GUI::Form(int pos_x, int pos_y, int height, int width)
{
if(get_pos_only_once == false)
{
form_x = pos_x;
form_y = pos_y;
form_height = height;
form_width = width;

get_pos_only_once = true;
}

//Create the form outline
d3dLine(pos_x,pos_y,pos_x+width,pos_y,dbRGB(50,50,50));
d3dLine(pos_x,pos_y,pos_x,pos_y+height,dbRGB(50,50,50));
d3dLine(pos_x+width,pos_y,pos_x+width,pos_y+height,dbRGB(50,50,50));
d3dLine(pos_x,pos_y+height,pos_x+width,pos_y+height,dbRGB(50,50,50));

//Create the handle bar
d3dLine(pos_x,pos_y+handle_bar_y,pos_x+width,pos_y+handle_bar_y,dbRGB(50,50,50));

//Fill the Handlebar;
d3dBox(pos_x,pos_y,pos_x+width,pos_y+handle_bar_y,dbRGB(3,3,3),dbRGB(3,3,3),dbRGB(3,3,3),dbRGB(3,3,3));


}

然而,当我更新表单的位置时,R_GUI::form_x 值没有改变。知道我做错了什么吗?

最佳答案

您不想在您的子类中有第二个变量 (b_form_x)。完全消除它。相反,您想使用 this->form_x,它在 Button 中将从 R_GUI 继承。这同样适用于 b_form_y

this 指的是对象的当前实例,不仅包含您的本地成员变量,还包含从类继承的任何成员变量,一直向上。

关于c++ - 使用继承在类之间传递非静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9058698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com