【问题标题】:map of objects inside the class of the objects in c++c++中对象类内的对象映射
【发布时间】:2020-11-24 20:29:22
【问题描述】:

如何在不引发错误的情况下创建这样的东西?

class Vertex
{
public:
    map<Vertex, int> connectedTo;

};

如果我使用 Vertex*,它会起作用,但这会在以后引起一些问题。我错过了什么,因为我找不到任何理由让我的代码不起作用?

【问题讨论】:

  • 您肯定想要指向连接对象的指针吗?不是自己拥有这些物品吗?
  • 如果您向我们展示您遇到的错误将会有所帮助。一方面,我没有看到为 Vertex 定义的 operator&lt;,因此它不能用作地图中的键。

标签: c++ class object


【解决方案1】:

正式地说,你的方法行不通,因为所有的 STL 容器,包括map,都必须是完整的类。一个类只有在右大括号之后才是完整的。

不太正式,您定义Vertex 的方式,它包含自身的多个实例。您的目的是表示图表吗?那么unordered_map&lt;Vertex*, int&gt; 可能就是你想要的。根据您计划的Vertex 对象的所有权,您可能希望使用智能指针而不是Vertex*shared_ptr&lt;Vertex&gt; 用于一般图,或者如果您的图是树,则可能使用unique_ptr&lt;Vertex&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2016-03-05
    • 2013-01-10
    相关资源
    最近更新 更多