Error: initializer must be brace-enclosed

Error: initializer must be brace-enclosed

这个错误是什么意思,为什么我不能用花括号初始化列表初始化这个结构?不幸的是,结构是自动生成的。

// Contains no functionality, purely documentative.
struct NativeTable {};

...

struct TableKeyT : public flatbuffers::NativeTable {
  typedef TableKey TableType;
  std::string exp{};
  std::string type{};
  std::string ext{};
};

...

TableKeyT key { std::string(sym), std::string(ex), std::string("") };
[build] ../../../src/io/socket.cpp:102:39: error: initializer for ‘flatbuffers::NativeTable’ must be brace-enclosed
[build]   102 | TableKeyT key { std::string(sym), std::string(ex), std::string("") };
[build]       |           ^~~

由于TableKeyT继承了NativeTable,你还需要初始化基class,但由于它是一个空的class,所以使用{}应该没事。

TableKeyT key { {}, std::string(sym), std::string(ex), std::string("") };
             //^^^