有人知道如何在动态分配的结构中初始化引用吗? 或者为什么这不起作用?
#include <stdio.h>
#include <stdlib.h>
class A
{
};
struct S
{
A& a;
};
int main()
{
A a;
S* s=new S;
s->a=a;
printf("a addr:%p\n", &a);
printf("s->a addr:%p\n", &(s->a));
delete s;
return 0;
}
输出:
a addr:0x7fff95b65aaf
s->a addr:(nil)
最佳答案
您需要在构造函数的初始化列表中初始化引用成员。甚至构造函数的主体也来不及了,因为成员已经初始化,无法更改。
在您的代码中,您正在使用(编译器提供的)默认构造函数,然后在构造对象后尝试设置引用。
试试这个:
struct S
{
S(A& a_) : a(a_){}
A& a;
};
int main()
{
A a;
S* s=new S(a);
...
关于c++ - 在动态分配的结构中初始化引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11546311/