gpt4 book ai didi

c++ - 如何获取指向引用成员的指针?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:44 26 4
gpt4 key购买 nike

考虑这段代码:

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) 时,我希望 ClassAA 并且 Member 为是 int&int。所以我什至不需要指针本身,而是允许检索类类型和成员类型的类型。

最佳答案

How to obtain pointer to reference (member)?

您无法获得指向(或引用或数组)引用的指针。 C++ 中没有“指向引用的指针”这样的类型。这是因为引用不需要存储空间,因此甚至可能没有存储引用的地址。

当您对引用应用 addressof 运算符时,您得到的是所引用对象的地址。

关于c++ - 如何获取指向引用成员的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42119458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com