1

次のtypedefの意味を理解しようとしています

class A;

typedef bool (*TempType) (shared_ptr<A> s);
4

2 に答える 2

4

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;
于 2012-12-15T20:46:03.100 に答える
2

宣言は使用を反映しています。と呼ばれるタイプを定義していTempTypeます。宣言から、それがとして使用されることがわかります。これは、関数のbool (*TempType)(shared_ptr<A> s)場合は関数呼び出しのように見え*TempTypeます。が関数*TempTypeであり、宣言が使用を反映している場合、の使用はTempType、間接参照演算子を使用してそれを逆参照することです。TempType関数へのポインタもそうです。それはどのタイプの関数へのポインタですか?引数としてaを取りshared_ptr<A>(という名前の引数s)、boolを返すもの。

一般に、「宣言は使用を反映する」は、これらの型定義を理解するための秘訣であり、定義している型と参照している型を覚えておく必要があります。混乱の可能性を除いてあまり追加されないので、定義に2つのバインドされていない名前(この場合はTempTypeと)を含めないようにします。と同じ意味を持っています。stypedef bool (*TempType) (shared_ptr<A> s);typedef bool (*TempType) (shared_ptr<A>);

于 2012-12-15T20:52:34.397 に答える