コレは出来ない…のかぁ… orz
void func<T>(T t, delegate void callback (T t, int foo)) { // 色々処理 int foo = hoge(); callback(t, foo); }
的なことをやりたかったんですが、仮引数の所で delegate が(多分)使えないアルねー…。 関数ポインタのノリで書いちゃったら全然駄目だったアルねー…
コレも駄目だし…
delegate void CALLBACK_KANA(Kana k, int foo); delegate void CALLBACK_GIN(Gin g, int foo); void func<T, D>(T t, D callback) { // 色々処理 int foo = hoge(); callback(t, foo); // tの型が決まってないのでアウト }
クラスに囲うしか無いかしら…。関数1つの為にクラスってのもなんかアレだけど…
class HOGE<T> { public delegate void CALLBACK(T t, int foo); public static void func(T t, CALLBACK callback) { // 色々処理 int foo = hoge(); callback(t, foo); } };
// C++ template<typename T> void func(T& t, void (*CALLBACK)(T& t, int foo)) { // 色々処理 int foo = hoge(); (*callback)(t, foo); } // とか、もっと簡略化(?)して template<typename T, typenamen FN> void func(T& t, FN fn) { // 色々処理 int foo = hoge(); fn(t, foo); }
とかが恋しいです(ぉ