考虑这段代码:
struct AA
{
int& rr;
};
有没有办法获取指向的指针(或引用)AA::rr
为了获得这个?
AA* aa;
auto mm = &AA::rr; // error: cannot create pointer to reference member ‘AA::rr’
aa ->* mm;
Also in gcc-7.0.1
decltype(AA::mm)
只是int&
。这是符合标准的吗?这有道理吗?
EDIT
抱歉各位,我提出的问题不太好。没有抱怨引用不是对象或者不存在指向引用的指针这样的事实。这个目标是相当自私的。给定struct AA { int& rr; };
我只想有一个这样的功能:
template < typename Class, typename Member >
void test(Member Class::*) { }
打电话时test(&AA::rr)
I want Class
to be AA
and Member
to be int&
or int
。因此,我什至不需要指针本身,而是需要它的类型,该类型将允许检索类类型和成员类型。
如何获取指向引用(成员)的指针?
您无法获取指向引用的指针(或引用或数组)。 C++ 中不存在“指向引用的指针”这样的类型。这是因为引用不需要具有存储空间,因此甚至可能不存在存储引用的地址。
当您对引用应用 addressof 运算符时,您得到的是所引用对象的地址。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)