トップページ > プログラム > 2014年07月29日 > amKy8C2I

書き込み順位&時間帯一覧

15 位/178 ID中時間01234567891011121314151617181920212223Total
書き込み数3100000000000000000000004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C++相談室 part113
【Python】スクリプト バトルロワイヤル45【pl,rb,php,js】

書き込みレス一覧

C++相談室 part113
639 :デフォルトの名無しさん[]:2014/07/29(火) 00:29:20.53 ID:amKy8C2I
>>637
目的は委譲というより反変引数を取ることです。

例えば極端な例ですがこんな感じです。
int Function( Base& );
int (*pointer)( Derived& ) = Function;

DerivedはBaseの派生型です。
pointerとFunctionは引数は異なりますが、
pointerとFunctionの引数は親子関係がある為
安全にFunctionをpointerに代入できる(反変性)筈です。
(C++の場合は引数のOffsetを計算するため単純にはできません。)

方法は選びませんので、
もし無名高階関数で簡単に対応出来るのでしたら、
方法をご教示ください。
【Python】スクリプト バトルロワイヤル45【pl,rb,php,js】
123 :デフォルトの名無しさん[sage]:2014/07/29(火) 00:30:44.81 ID:amKy8C2I
いまSmalltalkが地味に流行っとるな。
C++相談室 part113
642 :デフォルトの名無しさん[]:2014/07/29(火) 00:58:51.78 ID:amKy8C2I
>>640
int FunctionA( BaseA& );
int FunctionB( BaseB& );

int ( *pointer[2] )( Derived& ) =
{
 FunctionA,
 FunctionB
};

こんな感じでBaseが複数有るのでそれは無理ですね。
C++相談室 part113
646 :デフォルトの名無しさん[]:2014/07/29(火) 01:27:11.06 ID:amKy8C2I
>>643
struct FactoryForButton
{
 virtual Button *CreateButtonFor( LabelModel* ) = 0;
};
struct FactoryForTextBox
{
 virtual TextBox *CreateTextBoxFor( TextModel* ) = 0;
};
class ConcreateTextModel:public virtual TextModel
{
 /* 省略 */
public:
 Component *CreateBy( FactoryForText& );
 /* 他省略 */
};
class ConcreateFactory:
 public virtual FactoryForText,
 public virtual FactoryForButton
{
 /* Create系の実装 */
};
struct ExampleModel
{
 virtual Component *CreateBy( ConcreateFactory& ) = 0;
};

std::vector<ExampleModel> array;
array.push_back( new ConcreateTextModel() );


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。