错误:初始化程序必须用大括号括起来

Jar*_*ith 2 c++ gcc c++20

这个错误意味着什么以及为什么我不能使用大括号初始化列表来初始化这个结构?不幸的是,结构是自动生成的。

\n
// Contains no functionality, purely documentative.\nstruct NativeTable {};\n\n...\n\nstruct TableKeyT : public flatbuffers::NativeTable {\n  typedef TableKey TableType;\n  std::string exp{};\n  std::string type{};\n  std::string ext{};\n};\n\n...\n\nTableKeyT key { std::string(sym), std::string(ex), std::string("") };\n
Run Code Online (Sandbox Code Playgroud)\n
[build] ../../../src/io/socket.cpp:102:39: error: initializer for \xe2\x80\x98flatbuffers::NativeTable\xe2\x80\x99 must be brace-enclosed\n[build]   102 | TableKeyT key { std::string(sym), std::string(ex), std::string("") };\n[build]       |           ^~~\n
Run Code Online (Sandbox Code Playgroud)\n

康桓瑋*_*康桓瑋 6

由于TableKeyT继承NativeTable,您还需要初始化基类,但由于它是一个空类,因此使用{}应该没问题。

TableKeyT key { {}, std::string(sym), std::string(ex), std::string("") };
             //^^^
Run Code Online (Sandbox Code Playgroud)