C++ 如何在不创建类实例的情况下使用成员函数,使用std::function?

C++ 如何在不创建类实例的情况下使用成员函数,使用std::function?,c++,function,class,c++11,C++,Function,Class,C++11,我正在寻找一种在不创建类实例的情况下调用成员函数的方法,我指的不是静态函数 情况如下: //Texture.cpp #include "Window.hpp"//Window included void Texture::Init(const char* path, const Window&) { loadTexture(path, Window.getRenderer(); } void Texture::loadTexture(const char* path, SDL_Re

我正在寻找一种在不创建类实例的情况下调用成员函数的方法,我指的不是静态函数

情况如下:

//Texture.cpp
#include "Window.hpp"//Window included
void Texture::Init(const char* path, const Window&)
{
  loadTexture(path, Window.getRenderer();
}

void Texture::loadTexture(const char* path, SDL_Renderer* renderer)
{
  //code...
}
窗口有一个成员函数SDL_Renderer*getRenderer()。但是,我不能在这种情况下使用它,因为没有创建窗口的实例

我遇到了,如果我必须自己找到一个方法,我会做和那个家伙一样的事情:创建静态函数。然而,这对我来说似乎是个问题。使用std::function和std::bind的答案对我来说很好,但我不知道如何使用它。谁能帮我一下吗

我有:

  • 函数loadTexture,将const char*和SDL_Renderer*作为参数,并返回void
  • 函数Init,将const char*和const Window&作为参数,并返回void
  • 类窗口,该窗口具有函数getRenderer,不带参数并返回SDL_Renderer*
有谁能帮我解释一下,这样我下次遇到这个问题时也可以自己做同样的事情


提前感谢。

如果没有实例,就无法执行非静态方法(std::function和其他任何东西都不允许这样做)

通常非静态方法访问一些实例数据。您必须提供这些数据(即实例)

在您的例子中,我假设渲染器必须了解它渲染的窗口的一些信息

但是为什么要在没有实例的情况下调用getRenderer呢?您有一个实例:
const Window&
是一个实例。因此,只需使用第二个参数:

void Texture::Init(const char* path, const Window& wnd)
{
  loadTexture(path, wnd.getRenderer());
}

如果没有实例,就不能执行非静态方法(std::function和其他任何东西都不允许这样做)

通常非静态方法访问一些实例数据。您必须提供这些数据(即实例)

在您的例子中,我假设渲染器必须了解它渲染的窗口的一些信息

但是为什么要在没有实例的情况下调用getRenderer呢?您有一个实例:
const Window&
是一个实例。因此,只需使用第二个参数:

void Texture::Init(const char* path, const Window& wnd)
{
  loadTexture(path, wnd.getRenderer());
}

伙计,我很笨。。。我以为出于某种原因,它不允许我这样做,但结果我忘了给窗口命名,只是一直使用一个不存在的名字。。。谢谢你让我得到了显而易见的答案。老兄,我很笨。。。我以为出于某种原因,它不允许我这样做,但结果我忘了给窗口命名,只是一直使用一个不存在的名字。。。谢谢你把我引向了显而易见的答案。