基本上我有很多编写的代码,假设文件级静态是一个结构。所以所有引用都像 struct.member 。
我必须对此代码进行更改并使其成为 static struct * 并在运行时分配此结构。
我想创建一个参考 struct& ref = * myStatic 因为我很懒,并且不想将 struct.member 的A TON更改为 struct-> member 。
但引用需要在声明时初始化(对吗?),我只知道我想在运行时引用它。这可能吗?
(如果它令人困惑......我使用的是struct来代替我的实际结构名,而不是文字c ++ struct关键字)
答案 0 :(得分:1)
“引用需要在声明时初始化(对吗?)”
将初始化引用的对象必须存在于创建引用时[1],在这种情况下存在:
MyStruct* s = new MyStruct;
MyStruct& ref = *s;
这为类型为MyStruct
的对象动态分配内存,然后构造此对象,最后为该对象创建引用ref
。只要你小心s
的生命周期就完全没问题了。一旦s
所在的内存被释放,引用将变为无效。
虽然决定您是否会使用引用,但不应基于您对使用.
替换->
感到懒惰。
[1] C ++ 03标准8.3.2§4:“引用应初始化为引用有效对象 或功能。“