私の知る限り、C ++では、同じクラスの関数のメンバー内で別のメンバー関数を呼び出すには、暗黙的であるため、「this」プレフィックスは必要ありません。ただし、関数ポインターを使用する特定のケースでは、コンパイラーはそれを必要とします。次のコードは、func ポインターを介した呼び出しに "this" プレフィックスを含めた場合にのみ正しくコンパイルされます -
関数ポインターが使用されている場合、コンパイラーは同じクラスのメンバー func を指していると推測できますか?
class FooBar
{
private:
int foo;
public:
FooBar()
{
foo = 100;
}
int GetDiff(int bar)
{
return abs(foo - bar);
}
typedef int(FooBar::*MyFuncPtr)(int);
void FooBar::Bar()
{
MyFuncPtr f = &FooBar::GetDiff;
(this->*f)(10);
GetDiff(10);
}
};