0

以下のコードがあります。このTest関数は、パラメーターとしてスロットを受け入れるかどうかを指定できます。boost::signal2ライブラリのみを使用して同じことを達成する方法はありますか?

#include <boost/signals2.hpp>
#include <boost/optional.hpp>
#include <string>
#include <iostream>

typedef boost::signals2::signal<std::string (void)> CSignal;
typedef CSignal::slot_type CSlotType;
typedef boost::optional<CSlotType> COptSlotType;

void Test(const COptSlotType &optSlot = COptSlotType()) {
    std::string str;
    if (optSlot) {
        CSignal sig;
        sig.connect(*optSlot);
        const auto rt = sig();
        if (rt) {
            str = *rt;
        }
    }
    else {
        str = "No Slot";
    }
    std::cout << str << std::endl;
}

std::string TestSignal(void) {
    return "Signal";
}

int main(int argc, char *argv[]) {
    Test();
    Test(COptSlotType(&TestSignal));
    return 0;
}
4

0 に答える 0