我在第148行中阅读了mysql
源代码的代码,source code link here
我在这里感到困惑:
typename List::node_type& elem_node = elem->*list.node;
这很奇怪:->*
。
什么是语法意义?
答案 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;。