c++中对象类内的对象映射

Posted

技术标签:

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

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

class Vertex

public:
    map<Vertex, int> connectedTo;

;

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

【问题讨论】:

这能回答你的问题吗? C++ template compilation error - recursive type or function dependency 您肯定想要指向连接对象的指针吗?不是自己拥有这些物品吗? 如果您向我们展示您遇到的错误将会有所帮助。一方面,我没有看到为 Vertex 定义的 operator&lt;,因此它不能用作地图中的键。 【参考方案1】:

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

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

【讨论】:

以上是关于c++中对象类内的对象映射的主要内容,如果未能解决你的问题,请参考以下文章

如何从外部访问类内的自我对象

类内的函数共享给对象使用

c++ 三大特性之继承

面向对象

c++

C/C++类和对象类中常用的关键字总结