なぜthis
が静的メンバー関数で未評価のコンテキストで使用できないのですか?静的メンバー関数の未評価のコンテキストで
struct A
{
void f() {}
static void callback(void * self) // passed to C function
{
static_cast< decltype(this) >(self)->f();
}
};
このコードは、エラーを与える:
error: 'this' is unavailable for static member functions
static_cast< decltype(this) >(self)->f(); ^~~~
decltype(this)
が(時にはそれがVeryVeryLongClassName *
、その後、はるかに短い)簡潔にするために必要とされ、他の利点は、意図がより明確であるという事実です。
スタティックメンバー関数の評価されていないコンテキストでthis
を使用することについての標準は何ですか?
可能重複https://stackoverflow.com/questions/21143275/c-type-of-enclosing-class-in-static-member-function ) –