下面的示例不編譯,抱怨MessagePack,C++:如何使用MSGPACK_DEFINE與C++ 11枚舉類
In file included from /usr/include/msgpack.hpp:18:
/usr/include/msgpack/object.hpp:211:3: error: member reference base type 'logd::log_level' is not a structure or union
和用於其他枚舉類相應的錯誤。我的問題是,如何使用msgpack的c + + api,有一個序列化類的成員是C++ 11 enum class
類型?
#ifndef LOG_MSG_HPP_
#define LOG_MSG_HPP_
#include <stdlib.h>
#include <msgpack.hpp>
/** @namespace logd */
namespace logd {
enum class log_level { SILENT,... DEBUG };
enum class log_domain { AI, ... MISC };
class log_msg {
public:
log_msg(log_level lev, log_domain dom, std::string msg);
log_level level();
log_domain domain();
std::string message();
~log_msg();
MSGPACK_DEFINE(lev_, dom_, msg_);
private:
log_msg();
log_level lev_ {log_level::DEBUG};
log_domain dom_ {log_domain::MISC};
std::string msg_ {"No message given."};
};
} /* namespace logd */
#endif /* LOG_MSG_HPP_ */
注:由於枚舉是我的,我可以高興地修改他們做出msgpack快樂。不幸的是,我無法在他們的文檔或Google的頭幾頁中找到有關該主題的參考資料。我也無法確定從閱讀他們的頭文件/源代碼來做什麼,因爲我對C++很陌生。這似乎工作
這是使用枚舉類MessagePack的唯一途徑?不那麼優雅! –