C++相談室 part41
■ このスレッドは過去ログ倉庫に格納されています
0894892
2005/08/13(土) 21:59:31じゃあ、挙げとく
struct FuncHolderBase {};
template<typename Func>
class FuncHolder : public FuncHolderBase {
Func func_;
public:
FuncHolder(Func f) : func_(f) {}
operator Func() { return func_; }
};
class C {
std::auto_ptr<FuncHolderBase> fb_;
typedef void(*Func)(int);
public:
template<typename T>
void set(T f) { fb_.reset(new FuncHolder<T>(f)); }
template<typename T> T get() { return static_cast<FuncHolder<T>&>(*fb_); }
Func get() { return get<Func>(); }
};
class A : public C {
typedef void(A::*MF)(int);
B b_;
void print(int n) { std::cout << "Member: " << n << std::endl; }
public:
A() { b_.set(&A::print); }
void foo(int n) { (this->*b_.get<MF>())(n); }
};
後は890-891と同じ
■ このスレッドは過去ログ倉庫に格納されています