[英]Array of Pointers on Member functions of current class
I try to create an array of pointers of member function of my current class but without success for the moment... 我尝试创建当前类的成员函数的指针数组,但暂时没有成功...
I already tried many things, here is my code: 我已经尝试了很多事情,这是我的代码:
// Human.hpp
#include <iostream>
class Human
{
private:
void meleeAttack(std::string const & target);
void rangedAttack(std::string const & target);
void intimidatingShout(std::string const & target);
public:
void action(std::string const & action_name, std::string const & target);
};
// Human.cpp
#include "Human.hpp"
// ...
void Human::action(std::string const & action_name, std::string const & target)
{
std::string actionsStr[] = {"meleeAttack", "rangedAttack", "intimidatingShout"};
typedef void (Human::*Actions)(std::string const & target);
Actions actions[3] = {&Human::meleeAttack, &Human::rangedAttack, &Human::intimidatingShout};
for (int i = 2; i >= 0; i--)
if (actionsStr[i] == action_name)
{
actions[i](target); // there is an error HERE
break;
}
}
This code generate an error on compilation: 这段代码会在编译时产生错误:
main.cpp:41:23: error: called object type 'Actions' (aka 'void (Human::*)(const std::string &)') is not a function or function pointer
actions[i](target);
~~~~~~~~~~^
1 error generated.
What is the good way to do it ? 有什么好的方法呢?
for (int i = 2; i >= 0; i--)
if (actionsStr[i] == action_name)
{
(this->*(actions[i]))(target);
break;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.