如何在 C++ 中对成员数据进行别名?

How to alias pair member-data in C++?

如何在 C++ 中为成员数据对设置别名?

我有一个std::pair<int,int>的容器来存放主从

为了更好的可读性,我想使用类似的东西:

using Master = std::pair<int,int>::first;

std::pair<int,int> myPair;
auto myMaster = myPair.Master;

此处正确的语法是什么?

提前谢谢你。

你可以命名一个pointer-to-member

constexpr auto Master = &std::pair<int,int>::first;

std::pair<int,int> myPair;
auto myMaster = myPair.*Master;

我要进行以下操作:

int main() {
    cout<<"Hello World\n";
    
    constexpr auto Master = &std::pair<int,int>::first;

    std::pair<int,int> myPair;
    std::pair<int,int> myPair2;

    myPair.*Master = 321;
    myPair2.*Master = 10;
    cout<<myPair.*Master;
    cout<<myPair2.*Master;

    return 0;
}

感谢@Caleth

另一种方法是使用 tuple-like get 访问 std::pair 和 self-defined 常量:

const std::size_t Master = 0;

std::pair<int,int> myPair;
auto myMaster = std::get< Master >( myPair );

恕我直言,比指针访问更简洁、更易读。