1

本质上,我有很多代码是假设文件级静态是一个结构而编写的。所以所有的引用都像struct.member

我不得不更改此代码并将其设为静态结构 *并在运行时分配此结构。

我想创建一个参考struct& ref = *myStatic因为我很懒,不想将 struct.member 的 TON 更改为struct- > member

但是引用需要在声明时进行初始化(对吗?),我只知道我希望它在运行时引用什么。这可能吗?

(以防它令人困惑..我使用 struct 代替我的实际结构名称,而不是作为文字 c++ struct 关键字)

4

1 回答 1

1

“引用需要在声明时初始化(对吗?)”

将初始化引用的对象必须在创建引用时存在 [1],在这种情况下存在:

MyStruct* s = new MyStruct;
MyStruct& ref = *s;

this 为 type 的对象动态分配内存MyStruct,然后构造此对象,最后创建ref对该对象的引用。只要您小心s. s一旦驻留的内存被释放,引用就会失效。

尽管决定是否使用引用不应该基于您是否懒得替换.->.


[1] C++03 标准8.3.2 §4“应初始化引用以引用有效的对象或函数。”

于 2013-02-14T00:10:03.317 回答