我将从一些背景开始。
制作简单的游戏。
我有两个类,一个叫做BouncingBall,另一个叫做ASCIIRenderer。 我有一份要遵循的说明列表,但有些说明并不完全清楚。
第一条指令是在BouncingBall中创建一个名为m_pRenderer的指针,并指向ASCIIRenderer中的成员变量。它没有指定我必须指向哪个成员变量,并且那里的现有成员变量都是私有的,所以我自己制作并称之为Renderer。
第二条指令(我需要帮助的那个)是指我为BouncingBall类编写一个函数,使用m_pRenderer调用SetPixel,并使用三个变量作为参数。
SetPixel是ASCIIRenderer类中公共函数的名称,并且指令指示我必须以某种方式使用指针来调用它。
总结:我需要打电话给一个班级'使用指针在单独的类的函数内起作用。
有人可以向我解释一下我用什么语法来实现这个目标吗?
答案 0 :(得分:1)
根据您提供的详细信息,这是我收集的内容。假设BouncingBall类将获得X和Y pos并使用函数foo调用 要设置渲染器的X和Y值。另外,我不知道你会怎么做 初始化指针,因为它没有在上面详述。希望这会有所帮助。
class BouncingBall
{
public:
void foo( int posX, int posY)
{
m_pRenderer->setPixel( posX, posY);
}
private:
ASCIIRenderer* m_pRenderer;
};
答案 1 :(得分:0)
我在下面包含的代码显示了一个类的示例,在本例中为Ball
,具有指向另一个类的指针,在本例中为Renderer
,注入并存储以供以后使用。
然后Ball
班级可以使用'箭头调用Renderer
班级的公共函数。语法pointer->MemberFunction(arg1, arg2);
#include <iostream>
class Renderer
{
public:
/* Constructor and other functions omitted */
void SetPixel(const int x, const int y) const;
};
void Renderer::SetPixel(const int x, const int y) const
{
std::cout << "Set pixel: (" << x << ", " << y << ")" << std::endl;
}
class Ball
{
public:
Ball(const Renderer *const renderer, const int posX, const int posY);
void Render() const;
private:
const Renderer* _renderer;
int _posX;
int _posY;
};
Ball::Ball(const Renderer *const renderer, const int posX, const int posY)
: _renderer(renderer), _posX(posX), _posY(posY)
{}
void Ball::Render() const
{
_renderer->SetPixel(_posX, _posY);
}
int main()
{
const Renderer renderer;
const Ball ball(&renderer, 10, 20);
ball.Render();
return 0;
}
该计划的输出是:Set pixel: (10, 20)