我在set_var.h文件的MySQL源代码中找到了此代码,但不确定SV::* offset的含义是什么。
简而言之,它看起来像:
struct SV {...}
class A {
ulong SV::*offset;
A(ulong SV::*offset_arg): offset(offset_arg) {...}
};
class B {
DATE_TIME_FORMAT *SV::*offset;
B(DATE_TIME_FORMAT *SV::*offset_arg) : offset(offset_arg) {...}
}
等等。
最佳答案
ulong SV::*offset;
是名为A
的offset
类的成员,它指向SV
类型的ulong
类的成员。它的用法是这样的:
#include <iostream>
using ulong = unsigned long;
struct SV {
ulong x, y, z;
};
int main()
{
// A pointer to a ulong member of SV
ulong SV::*foo;
// Assign that pointer to y
foo = &SV::y;
// Make an instance of SV to test
SV bar;
bar.x = 10;
bar.y = 20;
bar.z = 30;
// Dereference with an instance of SV
// Returns "20" in this case
std::cout << bar.*foo;
return 0;
}
关于c++ - 什么是变量声明中结构的作用域解析?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41581512/