次のtypedefの意味を理解しようとしています
class A;
typedef bool (*TempType) (shared_ptr<A> s);
TempType
引数を取り、shared_ptr<A>
を返す関数ポインタ型bool
です。
たとえば、次のように使用できます。
bool my_func(shared_ptr<A> s)
{
return false;
}
// Variable x is of type TempType: A function pointer with a known signature.
TempType x = &my_func;
宣言は使用を反映しています。と呼ばれるタイプを定義していTempType
ます。宣言から、それがとして使用されることがわかります。これは、関数のbool (*TempType)(shared_ptr<A> s)
場合は関数呼び出しのように見え*TempType
ます。が関数*TempType
であり、宣言が使用を反映している場合、の使用はTempType
、間接参照演算子を使用してそれを逆参照することです。TempType
関数へのポインタもそうです。それはどのタイプの関数へのポインタですか?引数としてaを取りshared_ptr<A>
(という名前の引数s
)、boolを返すもの。
一般に、「宣言は使用を反映する」は、これらの型定義を理解するための秘訣であり、定義している型と参照している型を覚えておく必要があります。混乱の可能性を除いてあまり追加されないので、定義に2つのバインドされていない名前(この場合はTempType
と)を含めないようにします。と同じ意味を持っています。s
typedef bool (*TempType) (shared_ptr<A> s);
typedef bool (*TempType) (shared_ptr<A>);