我在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;是名为Aoffset类的成员,它指向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/

10-12 02:13