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

时间:2017-01-04 21:11:33

标签: c++ function class pointers

我将从一些背景开始。

制作简单的游戏。

我有两个类,一个叫做BouncingBall,另一个叫做ASCIIRenderer。 我有一份要遵循的说明列表,但有些说明并不完全清楚。

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

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

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

总结:我需要打电话给一个班级'使用指针在单独的类的函数内起作用。

有人可以向我解释一下我用什么语法来实现这个目标吗?

2 个答案:

答案 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)