C++自动,不明白如何分配操作员?

C++ auto , don't understand how assign operators?

本文关键字:分配 操作员 何分配 自动 明白 C++      更新时间:2023-10-16

我有这段代码。

CGraphicTextInstance*& prGuildNameInstance = pTextTail->pGuildNameTextInstance;

我想应用一些c++11特性,比如auto变换。

自动后应该是这样的:

auto prGuildNameInstance = pTextTail->pGuildNameTextInstance;

在添加了auto之后,只自动分配CGraphicTextInstance而没有运算符*&,我看到了这一点。

我的问题是为什么?我应该手动添加缺失的运算符吗?像这样?

auto &prGuildNameInstance = pTextTail->pGuildNameTextInstance;

我的问题是,这会破坏我的代码吗?这会是个问题吗?可以让auto分配他想要的吗?

auto(大部分)使用与模板推导相同的规则来推导类型。因此,它将剥离引用,因此您需要明确获取引用:

auto prGuildNameInstance = pTextTail->pGuildNameTextInstance;
//prGuildNameInstance is of type CGraphicTextInstance*
auto& prGuildNameInstance = pTextTail->pGuildNameTextInstance;
//prGuildNameInstance is of type CGraphicTextInstance*&

选择与任何变量基本相同:如果你想要引用,请请求引用;如果你想要一个值,就要求一个值。