C ++ auto,不了解如何分配运营商?

时间:2016-03-29 10:02:47

标签: c++ c++11 auto

我有这段代码。

CGraphicTextInstance*& prGuildNameInstance = pTextTail->pGuildNameTextInstance;

我想应用一些c ++ 11功能,如auto transform。

自动之后应该是这样的:

auto prGuildNameInstance = pTextTail->pGuildNameTextInstance;

添加自动后,自动分配CGraphicTextInstance而不使用运算符*&我看到了智能感知。

我的问题是为什么?我应该添加手动缺少的运营商?像这样?

auto &prGuildNameInstance = pTextTail->pGuildNameTextInstance;

我的问题可能会损坏我的代码吗? 这可能是个问题吗? 可以自动分配他想要的东西吗?

1 个答案:

答案 0 :(得分:5)

auto(大多数)使用与模板推导相同的规则来推导出类型。因此,它将删除引用,因此您需要明确提供引用:

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

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

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