1

クラスのメンバー関数を呼び出すテンプレート関数を作成しようとしています。

template<typename T>
void call(T owner, void (T::*func)())
{
    (owner.func());
}

と使用法:

Foo a;
call(a, &Foo::printname);

しかし、コンパイラはエラー C2664 を返します。どうしたの?

4

1 に答える 1

3

funcメンバー関数へのポインターです。それらを呼び出すための特別な構文があります。

(owner.*func)();
于 2013-06-19T19:17:04.603 に答える