考慮以下代碼:如何獲取指向參考成員的指針?
struct AA
{
int& rr;
};
有沒有辦法獲得指針(或者引用)AA::rr
爲了獲得這個?
AA* aa;
auto mm = &AA::rr; // error: cannot create pointer to reference member ‘AA::rr’
aa ->* mm;
而且在gcc-7.0.1
decltype(AA::mm)
只是int&
。這是否符合標準?這是否有意義?
編輯
對不起球員,我制定了問題不是非常好。不要抱怨引用不是對象,或者不存在指向引用的指針。目標很自私。鑑於struct AA { int& rr; };
我只是希望能有這樣的功能:
template < typename Class, typename Member >
void test(Member Class::*) { }
,調用test(&AA::rr)
當我想Class
是AA
和Member
是int&
或int
。所以我甚至不需要指針本身,但它的類型將允許檢索類類型和成員類型。
'汽車毫米=(AA-> RR);' –
引用不是對象遠作爲標準而言,所以你不能做像獲得地址或內存表示那樣的事情。我認爲這是不可能的。 – nwp
@Dan給你一個指向'rr'引用的對象的指針,而不是我認爲是目標的'rr'本身。 – nwp