C++/Flatbuffers - 验证 table 不是 root_type

C++/Flatbuffers - Verify table which is not root_type

这是我的脸书:

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 的 table? 如果可能的话,任何人都可以写一个例子作为答案吗?

P.S。 我尝试创建一些独特的函数来检查所有可能的类型,如下所示:

template<typename T>
bool VerifyBuffer(flatbuffers::Verifier &verifier){
    verifier.VerifyBuffer<T>(nullptr);
}

所以我的计划是像这样提供 LoginResponse

bool check = VerifyBuffer<Vibranium::LoginResponse>(&verifier);

然而 LoginResponse 继承自 private flatbuffers::Table 这是一个问题。所以我被困在这里了。

VerifyLoginRequestBuffer这样的函数是为路由类型生成的“便利”函数。您可以查看它们的(小)实现,并为任何其他 table 类型调用完全相同的函数。