構造体のインスタンスをインスタンス化するためにイニシャライザ リストを使用してきましたが、デフォルトのコンストラクタを追加したいと考えています。
struct Size {
unsigned int width;
unsigned int height;
};
void SizeFunc(Size const &size) { }
int main() {
SizeFunc({1024, 768}); // OK.
}
残念ながら、デフォルトのコンストラクターを追加すると、初期化リストでインスタンス化するときにエラーが発生します。
struct Size {
Size() : width(1920), height(1080) { }
unsigned int width;
unsigned int height;
};
void SizeFunc(Size const &size) { }
int main() {
Size size; // OK.
SizeFunc({1024, 768}); // error: no matching function for call to
// 'Size::Size(<brace-enclosed initializer list>)'
}
これを機能させるには、どのコンストラクターを追加する必要がありますか? std::initializer_list でコンストラクターを使用しようとしましたが、これまでのところ成功していません。