我对课程有点困惑,希望有人可以解释。
我正在制作一个课程,用于为游戏菜单创建按钮。有四个变量:
int m_x
int m_y
int m_width
int m_height
然后我想在类中使用render函数但是我不明白我如何在类中使用4个int变量并将它传递给类中的函数?
我的班级是这样的:
class Button
{
private:
int m_x, m_y; // coordinates of upper left corner of control
int m_width, m_height; // size of control
public:
Button(int x, int y, int width, int height)
{
m_x = x;
m_y = y;
m_width = width;
m_height = height;
}
void Render(SDL_Surface *source,SDL_Surface *destination,int x, int y)
{
SDL_Rect offset;
offset.x = x;
offset.y = y;
SDL_BlitSurface( source, NULL, destination, &offset );
}
} //end class
我感到困惑的是public:Button
中创建的值如何传递给void render
我不完全确定我是否已经做到了这一点,如果我到目前为止我的运气很好,因为我我还是有点困惑。
答案 0 :(得分:1)
在深入了解复杂的编程项目之前,您可能希望花一些时间学习C ++。
要回答您的问题,构造函数(Button
)中初始化的变量是类实例的一部分。因此,它们可以在任何类方法中使用,包括Render
。
答案 1 :(得分:1)
也许一个例子会有所帮助:
#include <iostream>
class Button
{
private:
int m_x, m_y; // coordinates of upper left corner of control
int m_width, m_height; // size of control
public:
Button(int x, int y, int width, int height) :
//This is initialization list syntax. The other way works,
//but is almost always inferior.
m_x(x), m_y(y), m_width(width), m_height(height)
{
}
void MemberFunction()
{
std::cout << m_x << '\n';
std::cout << m_y << '\n';
//etc... use all the members.
}
};
int main() {
//Construct a Button called `button`,
//passing 10,30,100,500 to the constructor
Button button(10,30,100,500);
//Call MemberFunction() on `button`.
//MemberFunction() implicitly has access
//to the m_x, m_y, m_width and m_height
//members of `button`.
button.MemberFunction();
}