Leo*_*eon 0 c++ constructor initialization default-constructor designated-initializer
我有一个非常大的结构,它具有自定义的复制构造函数、自定义的移动构造函数、自定义的移动分配器和自定义的复制分配器,但我还需要在某处使用指定初始化语法来初始化它,因为它非常大,而我只想仅初始化其中的几个字段,其余字段保留默认值。
\n例如:
\nstruct SA_t {\n int a;\n int b;\n int c;\n};\n\nint main() {\n SA_t sa1 { .a = 2, .b = 3, .c = 4,}; // no problem\n return EXIT_SUCCESS;\n};\n
Run Code Online (Sandbox Code Playgroud)\n但是当我为其添加自定义构造函数时,我根本无法使用指定初始化方法。
\nstruct SA_t {\n SA_t() {\n a = 0;\n b = 1;\n c = 2;\n };\n\n int a;\n int b;\n int c;\n};\n\nint main() {\n SA_t sa1 { .a = 2, .b = 3, .c = 4,}; /* no matching function for call to \xe2\x80\x98SA_t::SA_t(<brace-enclosed initializer list>)\xe2\x80\x99 */\n return EXIT_SUCCESS;\n};\n
Run Code Online (Sandbox Code Playgroud)\n有没有办法,我可以保留自定义构造函数并同时使用指定初始化语法?
\n