如何在 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 );
恕我直言,比指针访问更简洁、更易读。
如何在 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 );
恕我直言,比指针访问更简洁、更易读。