gpt4 book ai didi

c++ - 指向类成员函数的泛型函数指针

转载 作者:行者123 更新时间:2023-11-28 03:28:50 25 4
gpt4 key购买 nike

我怎样才能拥有通用函数指针。考虑下课。

#ifndef PERSON_HPP_
#define PERSON_HPP_

#include <string>

class Person {
public:
Person() {
}
void SetName(std::string person_name) {
m_name = person_name;
}
void setDept(std::string dept_name) {
m_dept = dept_name;
}
void setAge(int person_age ) {
m_age = person_age;
}
std::string getName() {
return m_name;
}
std::string getDept() {
return m_dept;
}
int getAge() {
return m_age;
}
private:
std::string m_name;
std::string m_dept;
int m_age;
};

#endif

我想将函数指针存储在 std::vector 中,用于 setNamesetDeptconstructor等等 ...

对于正常功能,我可以使用以下方法实现此功能

#include <vector>


int mult(int a) {
return 2*a;
}

int main()
{
int b;

std::vector<void *(*)(void *)> v;
v.push_back((void *(*)(void *))mult);
b = ((int (*)(int)) v[0])(2); // The value of b is 2.

return 0;
}

在我的案例中不允许Boost

最佳答案

你可以这样写:

// Pointer to member function as a data type. 
typedef void (Person::*MethodPtr)(std::string);
std::vector<MethodPtr> v;

指向成员的指针与任何其他数据类型没有任何不同。只有它应该用作二元运算符:

Person *bad_guy = ...;
bad_guy->*v[4]("abcd");

关于c++ - 指向类成员函数的泛型函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13153738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com