C++ std::map,不能使用类指针?

问题描述 投票:0回答:1

我对使用 C++ std 对象相对较新,并且遇到了一个令人惊讶的错误。我正在尝试使用 std::map 根据 ID 查找对象。在映射中存储指向对象的指针而不是对象本身似乎更有效,因此我更喜欢使用下面的第一个定义,而不是第二个。但是,我遇到了一个令人惊讶的错误。

以下失败并出现错误“模板参数无效”

std::map<int, *cOutQueueItem> map_IndexedOutputItems;

以下代码编译良好。

std::map<int, cOutQueueItem> map_IndexedOutputItems;

第一个通常是不允许的,还是我可能做错了什么?

谢谢!

c++ std
1个回答
0
投票

您遇到的问题是由于地图声明中的语法不正确造成的。当您想在 std::map 中存储指针时,定义它的正确方法是使用指针类型作为映射值。在此上下文中,语法 cOutQueueItem 不正确。相反,您应该使用 cOutQueueItem

正确的语法应该是 -

std::map<int, cOutQueueItem*> map_IndexedOutputItems;
© www.soinside.com 2019 - 2024. All rights reserved.