std::包含类方法的向量
std::vector that holds class methods
我这样做是为了枚举我的类成员
enum MemberType {A, B, C, D};
class Hello
{
public:
std::vector<std::function<void(Hello*, void)>> m_members;
void func()
{
};
Hello()
{
m_members[A] = func();
}
};
这是怎么回事?
首先,您有一个额外的void
:
std::vector<std::function<void(Hello*)>> m_members;
然后,您需要分配更多类似的东西:
m_members[A] = &Hello::func;
或者您可以存储绑定函数,在这种情况下,std::function<void()>
和std::bind(&Hello::func, this)
。
1)在调用m_members[A] = ...
之前,您需要保留vector
:)空间无论如何,以下是使事情正常工作的方法:
class Hello
{
public:
std::vector<void(Hello::*)()> m_members;
void func()
{
cout << "func" << endl;
};
Hello()
{
m_members.push_back(&Hello::func);
}
};
int main()
{
Hello obj;
(obj.*obj.m_members[A])();
std::cin.get();
return 0;
}
相关文章:
- 在C++中,如何创建包含可变模板对象的异构向量?
- 包含指向其他结构的指针向量的结构
- 在 C++ 向量构造中包含迭代器
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 如何将包含另一个对象向量的对象保存到文件中,并使用C++中的二进制文件从文件中读回?
- C++如何乘以包含 std::variant 元素的向量的迭代器?正在执行迭代器类型的转换?
- 如何删除包含其他向量的向量?
- boost::interprocess::managed_mapped_file 如何包含弹性向量?
- 如果字符串向量包含字符'p',如何检查 c++
- C++11 向量包含 2 个不同的子类,但不能同时进行
- 如何将智能指针向量转换为常量向量,该常量向量包含指向常量的智能指针
- 在redis中存储chars的向量 - 包含nul
- 如何创建一个接受向量的类,该向量包含任何类型的数据
- 如果向量包含重复项,则此函数应返回 true。知道为什么它不起作用吗?
- 访问作为指向该类的指针向量包含的类的方法
- 在Vector中,一个向量包含8000个成员
- 如果向量a包含与向量b相同的元素,我如何有效地检查
- 类的向量包含函数
- 填充到一个向量中,该向量包含指向列表的指针
- 向量包含结构的排序