为什么我无法访问指向数组中成员函数的指针?
Why can't I access the pointer to my member function in my array?
我有带有指向类方法的指针数组的类。但是,在类中,当我尝试调用数组中的一个函数时,出现错误。以下是相关代码:
class MyClass
{
typedef void(MyClass::*FunctionPointer)(size_t *i);
void func1(size_t *i) { }
void func2(size_t *i) { }
void func3(size_t *i) { }
void func4(size_t *i) { }
FunctionPointer myFuncs[4] = { func1, func2, func3, func4 };
const std::string funcList[4] = { "FUNC1", "FUNC2", "FUNC3", "FUNC4" };
void doFunc(std::string in)
{
size_t *j = 0;
for (size_t i = 0; i < 4; ++i)
{
if (in == funcList[i]) { this->myFuncs[i](j); }
}
}
};
我尝试省略"this->"和"this->*",但没有任何效果。我得到的错误是"明显调用括号前面的表达式必须具有(指针指向(函数类型。根据互联网,这意味着我正在尝试调用未定义为函数的东西。但我很确定我是? 谢谢
如果您遵循正确的语法,则可以;) 使用以下方法获取方法的地址:
&MyClass::func1
然后,要解析函数指针,请执行以下操作:
(this->*myFuncs[i])
或全部...
class MyClass
{
typedef void(MyClass::*FunctionPointer)(size_t *i);
void func1(size_t *i) { }
void func2(size_t *i) { }
void func3(size_t *i) { }
void func4(size_t *i) { }
FunctionPointer myFuncs[4] = { &MyClass::func1, &MyClass::func2, &MyClass::func3, &MyClass::func4 };
const std::string funcList[4] = { "FUNC1", "FUNC2", "FUNC3", "FUNC4" };
void doFunc(std::string in)
{
size_t *j = 0;
for (size_t i = 0; i < 4; ++i)
{
if (in == funcList[i]) { (this->*myFuncs[i])(j); }
}
}
};
相关文章:
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 将公共但非静态的成员函数与ALGLIB集成
- 使用指向成员的指针将成员函数作为参数传递
- 将重载的成员函数传递给函数模板
- 我不小心调用了一个没有自己类对象的成员函数.但这是怎么回事呢
- 如何在C++中使用非静态成员函数作为回调函数
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 关联容器的下界复杂性:成员函数与非成员函数
- 在 C++ 中用派生类型重写成员函数
- 链表的泛型函数remove()与成员函数remove)
- 如何将lambda作为模板类的成员函数参数
- constexpr构造函数需要常量成员函数时出现问题
- 将自由函数绑定为类成员函数
- 区分非成员函数和头文件中的成员函数
- 如何从子成员函数修改父公共成员变量
- 保留对其他类的成员函数的引用
- 在运算符重载定义中使用成员函数(const错误)
- 内联如何影响模块接口中的成员函数
- 将成员函数指针作为参数传递给模板方法