【发布时间】:2020-11-04 13:36:50
【问题描述】:
这是我的脸书:
namespace Vibranium;
enum LOGIN_STATUS : int {
INVALID_CREDENTIALS,
LOGIN_SUCCESS,
ACCOUNT_LOGGEDIN,
ACCOUNT_INGAME,
ACCOUNT_BANNED,
ACCOUNT_LOCKED
}
table LoginRequest{
email:string;
password:string;
client_hash:string;
connection_id:uint32;
}
table LoginResponse{
account_id:uint32;
status:LOGIN_STATUS;
}
root_type LoginRequest;
这会生成名为VerifyLoginRequestBuffer 的函数,但是没有名为VerifyLoginResponseBuffer 的函数,所以我现在不知道如何验证LoginResponse。
我的问题是:
如何在 C++ 中验证未标记为 root_type 的表?
如果可能的话,任何人都可以写一个例子作为答案吗?
附: 我尝试创建一些独特的函数来检查所有可能的类型,如下所示:
template<typename T>
bool VerifyBuffer(flatbuffers::Verifier &verifier){
verifier.VerifyBuffer<T>(nullptr);
}
所以我的计划是像这样提供LoginResponse:
bool check = VerifyBuffer<Vibranium::LoginResponse>(&verifier);
但是 LoginResponse 继承自 private flatbuffers::Table 这是一个问题。所以我被困在了这里。
【问题讨论】:
标签: c++ flatbuffers