C++相談室 part90
■ このスレッドは過去ログ倉庫に格納されています
0087デフォルトの名無しさん
2011/07/21(木) 00:39:37.51ありがとうございます。
やりたいことは派生クラスから、基底クラスのコンストラクタの振る舞いを制御するということです。いわゆる仮想コンストラクタという奴です。
いろいろ調べたり、More Effective STL を読み返すと、一筋縄でない事を知り思考錯誤しています。
auto_ptrの使い方が間違っていてエラーが出ます
error C2555: 'Foo::clone': オーバーライドする仮想関数の戻り値の型が異なり、'Hoge::clone' の covariant ではありません。
error C2664: 'Foo::Foo(const Foo &)' : 1 番目の引数を 'const Foo *const ' から 'const Foo &' に変換できません。(新しい機能 ; ヘルプを参照)
#include <memory>
#include <iostream>
using namespace std;
class Hoge
{
public:
virtual Hoge * clone () const = 0;
protected:
int n;
};
class Foo : public Hoge
{
public:
//Foo * clone() const { return new Foo( *this ); } ここでエラーがでますorz
auto_ptr<Foo> clone() const { return new Foo( this ); }
Foo()
{
int n = 0;
cout << "Foo Constructor" << endl;
}
};
■ このスレッドは過去ログ倉庫に格納されています