私がしたいのはこれです:
#include <memory>
class autostr : public std::auto_ptr<char>
{
public:
autostr(char *a) : std::auto_ptr<char>(a) {}
autostr(autostr &a) : std::auto_ptr<char>(a) {}
// define a bunch of string utils here...
};
autostr test(char a)
{
return autostr(new char(a));
}
void main(int args, char **arg)
{
autostr asd = test('b');
return 0;
}
(実際には、配列も処理するauto_ptrクラスのコピーがありますが、同じエラーがstlクラスにも当てはまります)
GCC4.3.0を使用したコンパイルエラーは次のとおりです。
main.cpp:152:エラー: `autostr :: autostr(autostr)'の呼び出しに一致する関数がありません main.cpp:147:注:候補は次のとおりです:autostr :: autostr(autostr&) main.cpp:146:注:autostr :: autostr(char *)
autostr(autostr&)の有効なパラメーターとしてautostr引数が一致しない理由がわかりません。