如何获取指向方法的特定重载的方法指针:
struct A {
void f();
void f(int);
void g();
};
Run Code Online (Sandbox Code Playgroud)
我知道
&A::g
Run Code Online (Sandbox Code Playgroud)
是一个指针g.但是如何获得指针f或f(int)?
在下面的(工作)代码示例中,模板化的register_enum()函数用于迭代枚举并调用用户提供的回调以将枚举值转换为c-string.所有枚举都在一个类中定义,枚举到字符串转换是使用静态to_cstring(enum)函数完成的.当一个类(如下面的着色器类)具有多个枚举和相应的重载to_cstring(enum)函数时,编译器无法确定哪个是正确的to_cstring()函数传递给register_enum().我认为代码解释得比我能好......
#include <functional>
#include <iostream>
// Actual code uses Lua, but for simplification
// I'll hide it in this example.
typedef void lua_State;
class widget
{
public:
enum class TYPE
{
BEGIN = 0,
WINDOW = BEGIN,
BUTTON,
SCROLL,
PROGRESS,
END
};
static const char *to_cstring( const TYPE value )
{
switch ( value )
{
case TYPE::WINDOW: return "window";
case TYPE::BUTTON: return "button";
case TYPE::SCROLL: return "scroll";
case TYPE::PROGRESS: return "progress";
default: break;
}
return nullptr;
}
};
class …Run Code Online (Sandbox Code Playgroud)