如何从另一个类调用一个类中的函数?(C++)

How do I call a function in one class from another class? (C++)

本文关键字:一个 C++ 函数 另一个 调用      更新时间:2023-10-16

我将从一些上下文开始。

制作一个简单的游戏。

我有两个类,一个叫BouncingBall,另一个叫ASCIIRenderer。我有一份说明清单,但有些说明并不完全清楚。

第一条指令是在BouncingBall中创建一个名为m_pRenderer的指针,并使其指向ASCIIRenderer中的成员变量。它没有指定我必须指向哪个成员变量,而且其中现有的两个成员变量都是私有的,所以我自己创建了它,并称之为Renderer。

第二条指令(我需要帮助)是在为BouncingBall类编写函数时使用m_pRenderer调用SetPixel,并使用三个变量作为参数。

SetPixel是ASCIIRenderer类中一个公共函数的名称,指令指出我必须以某种方式使用指针来调用它。

摘要:我需要使用指针从一个单独类的函数中调用一个类的函数。

有人能向我解释一下我将使用什么语法来实现这一点吗?

根据您提供的详细信息,我收集到了这些信息。假设BouncingBall类将获得X和Y位置,并用要设置"渲染器"的X和Y值。还有,我不知道你会怎么做初始化指针,因为上面没有详细说明。希望这能有所帮助。

class BouncingBall
{
public:
void foo( int posX, int posY)
{
m_pRenderer->setPixel( posX, posY);
}
private:
ASCIIRenderer* m_pRenderer;
};

我下面包含的代码显示了一个类的示例,在本例中为Ball,它有一个指向另一个类(在本例为Renderer)的指针,该指针被注入并存储以供以后使用。

然后,Ball类可以使用"箭头"语法pointer->MemberFunction(arg1, arg2);调用Renderer类上的公共函数

#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)