小编Ver*_*ero的帖子

仅当共享指针时才阻止创建类

如何防止人们创建类的实例,而只创建共享指针?我正在做类似的事情:

class OnlyShred
{
public:
    friend std::shared_ptr<OnlyShred> make_shared()
    {
        return std::make_shared<OnlyShred>();  
    };

private:
    OnlyShred() = default;
    OnlyShred(const OnlyShred&) = delete;
    OnlyShred(const OnlyShred&&) = delete;
    OnlyShred& operator=(const OnlyShred&) = delete;
};
Run Code Online (Sandbox Code Playgroud)

您能确认一下这是否可以吗?如果你能想到这样做有什么缺点吗?该实例无法复制/移动,因此这必须保证当有人使用此类时只有共享指针存在?

c++ copy instance shared-ptr

4
推荐指数
1
解决办法
396
查看次数

使用 Boost Graph Library 的简单示例是什么

我正在尝试使用BGL,我发现文档很精确,但缺乏更多简单案例的示例。我的目标如下所述(阅读文档后我仍然无法做到这一点):

struct Vertex
{
    double m_d;
    std::size_t m_id;
};

//or

struct Vertex
{
    double m_d;
    std::size_t id() const;
};
Run Code Online (Sandbox Code Playgroud)

目标

  1. 有向图 G(除了 in_edges 之外,双向图和有向图有什么区别?)
  2. G可以保存顶点类型Vertex。
  3. 通过 id 从 G 获取顶点,并在需要时更改 Vertex 结构中的 m_d 值。
  4. 添加、删除顶点和顶点之间的边,还支持成本,即成本(边)。

您能给我写一个关于如何使用 BGL 执行此操作的示例吗?我相信我需要MutableBidirectionalGraph

c++ boost graph

1
推荐指数
1
解决办法
505
查看次数

标签 统计

c++ ×2

boost ×1

copy ×1

graph ×1

instance ×1

shared-ptr ×1