[英]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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.