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。if*TempType是一个函数,并且声明反映了使用,我们的使用TempType是用解引用操作符解引用它;TempType指向函数的指针也是如此。它指向什么类型的函数?一个将 ashared_ptr<A>作为参数(所述参数名为s),并返回一个布尔值。

一般来说,“声明反映使用”是弄清楚这些类型定义的秘诀,同时需要记住你定义的类型和引用的类型。我尽量避免在定义中包含两个未绑定的名称(在本例中为TempTypes),因为除了可能引起混淆之外,它并没有增加太多;typedef bool (*TempType) (shared_ptr<A> s);并且typedef bool (*TempType) (shared_ptr<A>);具有相同的含义。

于 2012-12-15T20:52:34.397 回答