- 154 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 14:16:13 ]
- >>153
これは良いですね!頂きます。 使ってみて、若干罠というか、引数なし版はプロトタイプ宣言と勘違いされるため R<r> a(r()); //error こうする必要があるんですね(もっと良いやり方があるのかは知らないですが・・) R<r> b(*(new r())); これを参考に、少し書き換えて見ました struct b {virtual int rdm(){return 0;}}; struct r:b {int rdm(){return rand()%128;}}; struct rs:b{int rdm(){return rand()%7+60;}}; struct rc:b{ int val; rc(int n) : val(n){} int rdm(){int tmp=rand()%7;if(tmp%val==0){return tmp;}else{return rdm();}}}; template <class T=b > struct Q { T* t; Q( T* t_) : t(t_){} int rdm() { return t->rdm();} }; Q<> a(new rc(3)); Q<> b(new r());
|

|