如何在C++中对成员数据进行别名
我有一个std::pair<int,int>
容器来存储主从对。
为了更好的可读性,我想使用这样的东西:
using Master = std::pair<int,int>::first;
std::pair<int,int> myPair;
auto myMaster = myPair.Master;
这里的正确语法是什么?
提前谢谢。
您可以命名指向成员的指针
constexpr auto Master = &std::pair<int,int>::first;
std::pair<int,int> myPair;
auto myMaster = myPair.*Master;
另一种选择是使用类似元组的get
访问std::pair
,并使用自定义常量:
const std::size_t Master = 0;
std::pair<int,int> myPair;
auto myMaster = std::get< Master >( myPair );
比定点访问IMHO更干净、更可读。
我将使用以下内容:
int main() {
cout<<"Hello Worldn";
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