簡體   English   中英

是否可以將函數指針保留在std :: vector中?

[英]Is it possible to keep function pointers in an std::vector?

是否可以將函數指針保留在std :: vector中? 並在迭代器循環中調用每個函數?

參考: http : //en.wikipedia.org/wiki/Function_pointer

是否可以將函數指針保留在std::vector

當然,只要它們都是同一類型:

void foo()
{
    std::cout << "inside foo\n";
}

void bar()
{
    std::cout << "inside bar\n";
}

void baz()
{
    std::cout << "inside baz\n";
}

std::vector<void(*)()> fps { foo, bar, baz };

並在迭代器循環中調用每個函數?

完全沒有問題:

for (auto&& fp : fps)
{
    fp();
}

您可能還需要考慮Boost Signals2庫。 您可以將任何數量的函數指針(也稱為“插槽”)注冊到“信號”,並通過簡單地調用“信號”本身來調用每個函數指針。 該庫負責管理函數指針列表,並在必要時遍歷每個函數指針。

暫無
暫無

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

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