これは矛盾しているようです。 Example :: funcの代わりに& Example :: funcを使用するのはなぜですか? Example :: funcまたは& exampleFunctionが使用されていますか?私たちが関数への参照をして、Example :: funcのルールを外すことはできないようです。と私は方法を考えて& exampleFunctionは、すでにポインタを返しますので、関数を考える。には、&funcまたはclass :: funcのC++での使用がありますか?
#include <iostream>
class Example {
public:
void func() { std::cout <<"print me\n"; }
};
void exampleFunction() { std::cout << "print me too\n"; }
typedef void (Example::*ExampleFunc_t)();
typedef void (*ExampleFunction_t)();
int main()
{
Example e;
ExampleFunc_t f = &Example::func;
ExampleFunction_t f2 = exampleFunction;
(e.*f)();
f2();
return 0;
}
は++も参照(のtypedefが機能していますvoid(&FuncRef_t)())ではなく、メンバ関数の参照ではありません。 – dalle
ええ、私は関数の暗黙の変換を持つと便利だと思います。とにかくポインタを渡すことが多いので(関数を渡すことはできないので、暗黙の変換によってポインタを渡します)。私は、T :: fが不十分である理由はあまり曖昧であると推測します。もしそれが –
のメンバ関数ポインタであれば、Base :: f();を書くことはできません。基本クラス関数を呼び出す。 (this - > * Base :: f)();を書く必要があります。それはまあまあです。だから、&T :: fooを持ってポインタを得ることは良い解決策だと思います。 –