[問題] 想要把pair的first跟second「換個名字」
遇到的問題: (題意請描述清楚)
過去我都會用 typedef pair<int,int> MyType; 來定義我要的pair型態
但是這樣存取還是會遇到 xxx.first 跟 xxx.second 這樣的存取方式 很不好懂
我希望可以用 xxx.height 跟 xxx.weight (我用身高跟體重舉例)來存取它
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
g++ 不過希望正常的compiler都能用XD
有問題的code: (請善用置底文標色功能)
這是我依照想法寫的
struct MyType: public pair<int,int>{
MyType():height(first),weight(second){}
MyType(int h, int w):height(first),weight(second){height=h, weight=w;}
MyType(pair<int,int> p):height(first),weight(second)
{height=p.first,weight=p.second;}
int &height, &weight;
};
補充說明:
我的想法是用reference來達成目的,
第一個constructor是基本的給定reference
第二個constructor則是為了跟pair(const T1 &a, const T2 &b)相容
第三個則是希望MyType可以跟pair互換
(因為我用繼承 所以MyType當成pair<int,int>用應該是沒問題才對)
但是寫完以後我發現:
1. height(first),weight(second) 這段初始化我要寫3遍 感覺很蠢
但是我不知道該怎麼樣才能讓他們用同一段程式初始化一個reference
2. 這樣寫起來好囉唆....有沒有辦法可以更簡潔的達成我的目的呢?
麻煩各位指點一下迷津...小弟對C++不太熟 Q_____Q
謝謝了<(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.16.250
→
05/08 18:33, , 1F
05/08 18:33, 1F
→
05/08 18:34, , 2F
05/08 18:34, 2F
→
05/08 18:34, , 3F
05/08 18:34, 3F
→
05/08 18:34, , 4F
05/08 18:34, 4F
→
05/08 18:35, , 5F
05/08 18:35, 5F
→
05/08 18:36, , 6F
05/08 18:36, 6F
→
05/08 18:39, , 7F
05/08 18:39, 7F
→
05/08 18:39, , 8F
05/08 18:39, 8F
→
05/08 18:41, , 9F
05/08 18:41, 9F
→
05/08 18:42, , 10F
05/08 18:42, 10F
→
05/08 18:42, , 11F
05/08 18:42, 11F
→
05/08 18:45, , 12F
05/08 18:45, 12F
→
05/08 18:45, , 13F
05/08 18:45, 13F
→
05/08 19:02, , 14F
05/08 19:02, 14F
→
05/08 19:02, , 15F
05/08 19:02, 15F
→
05/09 03:25, , 16F
05/09 03:25, 16F
討論串 (同標題文章)