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