【问题标题】:Making a STL Queue of pointer types in C++ [closed]在 C++ 中创建指针类型的 STL 队列 [关闭]
【发布时间】:2012-11-07 22:40:22
【问题描述】:

我似乎不太明白为什么这不起作用。我试图创建一个指针类型队列,但失败了。我有一个教室,我想创建一个指向 Room 的指针队列。所以我做了:

queue<*Room> bfsRooms;

这给了我错误:

`*' 不能出现在常量表达式中

这是否意味着不可能创建一个 STL 指针队列?

【问题讨论】:

  • 指针的 Q 是什么?你的意思是指针的常量吗?
  • 请向我们展示您的代码。请注意,queue&lt;Room&gt; 不是指针队列,除非 Room 是指向指针类型的 typedef。
  • @billz 是“指针常量”的集合名词吗?
  • @Caribou lolz,我想是的......我喜欢它=P
  • 将* 放在Room 之后而不是它之前。

标签: c++ pointers stl queue


【解决方案1】:

不应该没问题,您应该真正链接确切的代码和确切的错误,以便我们可以更好地帮助您。

也就是说指针队列看起来像这样:

 Room r;
 std::queue<Room*> rooms;
 rooms.push(&r);

编辑:值得注意的是,如果这些指针拥有它们指向的对象,则应该真正将指针封装在智能指针中,例如:

std::queue<std::unique_ptr<Room>> rooms;

这遵守RAII原则,会自动清理资源。

【讨论】:

  • 好的,谢谢,我是 C++ 菜鸟,没有意识到它应该是 Room* 而不是 *Room,这解决了我的问题。我觉得自己很笨哈哈。
  • @ThomasColgrove 如果有帮助,您可以将其标记为正确,以便将来可以帮助其他人
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
相关资源
最近更新 更多