簡體   English   中英

std :: vector包含類方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM