' typename List :: node_type&的语法含义是什么? elem_node = elem-> * list.node;'?

时间:2015-10-27 11:27:34

标签: c++ class pointers struct

我在第148行中阅读了mysql源代码的代码,source code link here

我在这里感到困惑:

typename List::node_type&   elem_node = elem->*list.node;

这很奇怪:->*。 什么是语法意义?

1 个答案:

答案 0 :(得分:2)

需要->*表示法,因为list是指向成员的指针。这是一个简单的例子:

#include <iostream>

struct S {
    int a;
    int b;
};

int main()
{
    // 'ptr' now points to the 'b' member of some 'S' value.
    int (S::*ptr) = &S::b;

    S *x = new S;
    x->*ptr = 5;

    std::cout << x->b << '\n';
}

此程序打印&#39; 5&#39;。 ptr指针的类型为int (S::*),即指向int结构的某个S成员的指针。它已初始化为指向b成员。

当然,要实际一些合理的事情,你需要指定要修改的 S结构。这是通过

完成的
x->*ptr

可以读作&#34;由x指针取消引用的ptr值的成员&#34;。