構造体fooをstd::vector<foo>にpush_backしたいのですが、
「"initializer list"から"const foo&"に変換できません」や
「型 "char *"の値を使用して "char"型の実体を初期化はできません」
とコンパイラに怒られてしまいます…。
どうすればエラーが無くなるのでしょうか?
#include <vector>
struct foo {
char ch[3];
char* pch;
foo(char* c, char* p) :ch(c), pch(new char[3]{ *p }) {} //Error
~foo() { delete pch; }
};
int main() {
std::vector<foo> v;
char c1[3] = "あ";
const char* c2 = "い";
v.push_back({ c1, c2 }); //Error
v.push_back({ c2, c1 }); //Error
}
Error (active) E0304 no instance of overloaded function "std::vector<_Ty, _Alloc>::push_back [with _Ty=foo, _Alloc=std::allocator<foo>]" matches the argument list
Error C2664 'void std::vector<foo,std::allocator<_Ty>>::push_back(_Ty &&)': cannot convert argument 1 from 'initializer list' to 'const foo &'
Error C2664 'void std::vector<foo,std::allocator<_Ty>>::push_back(_Ty &&)': cannot convert argument 1 from 'initializer list' to 'const foo &'
Error (active) E0144 a value of type "char *" cannot be used to initialize an entity of type "char [3]"
Error (active) E0304 no instance of overloaded function "std::vector<_Ty, _Alloc>::push_back [with _Ty=foo, _Alloc=std::allocator<foo>]" matches the argument list