0

我正在尝试spsc_queue.pop()这个struct

enum action_type {
    SUBSCRIBE,
    UNSUBSCRIBE,
    MESSAGE
};

struct action {
    action() = default ;
    action(action_type t, connection_hdl h) : type(t), hdl(h) {}
    action(action_type t, server::message_ptr m) : type(t), msg(m) {}

    action_type type;
    websocketpp::connection_hdl hdl;
    server::message_ptr msg;
};

action a;
while(m_actions.pop(a)){
    ...

但每当我测试时

std::cout << "'" << a.type << "'" << std::endl;

'0'被写入终端,但它应该只是 的值之一action_type。我读过 a 的默认值struct0,但为什么不能spsc_queue.pop()设置a

( boost::lockfree::spsc_queue)

4

1 回答 1

2

SUBSCRIBE 值为 0。如果你想给SUBSCRIBE一个不同的值,你可以初始化枚举器,例如,使用1

enum action_type {
    SUBSCRIBE = 1,
    UNSUBSCRIBE,
    MESSAGE
};

其他枚举器将获得各自的下一个整数值。

于 2013-09-14T00:47:03.920 回答