依赖于类成员属性的类实例成员

Posted

技术标签:

【中文标题】依赖于类成员属性的类实例成员【英文标题】:Class instance member that depends on class member attribute 【发布时间】:2020-05-17 20:55:45 【问题描述】:

我的教师为我提供了一个代表二叉树的类,我们必须将它用于分配。 所以我正在做一个名为 cluster 的课程,事情是这样的:

BinTree(我只复制了我所需要的部分):

template <typename T>
class BinTree 
public:

// Constructs an empty tree. Θ(1).
BinTree ()
:   p(nullptr)
   

// Constructs a tree with a value x and no subtrees. Θ(1).
explicit BinTree (const T& x);

// Constructs a tree with a value x and two subtrees left and right. Θ(1).
explicit BinTree (const T& x, const BinTree& left, const BinTree& right);

集群:

class Cluster 
    private:

    BinTree<std::pair<std::string, double>> _cluster;

    public:
    Cluster();
    //etc....

由于我不能使用继承(我们还没有达到那部分),我真的不知道 Cluster 的构造函数是怎样的。集群对象将是二叉树,但我从“叶子”开始(英语不是我的第一语言,所以我不知道如何称呼它),因此我必须创建一个带有字符串的集群 a double = 0.0.

我假设 Cluster 构造函数是这样的:

Cluster(const std::string& id) : _cluster(make_pair(id, 0.0));

这是正确的吗?

然后,拥有 2 个特定的集群,我会将它们合并为一个。这个新的集群,因为它的 _cluster 属性是一个二叉树,将是以前的父级,这里是我必须使用 BinTree 的第三个构造函数,但我不知道该怎么做。

【问题讨论】:

【参考方案1】:

据我了解,您想要合并 2 个集群,因此您可以像在 BinTree 类中那样做。

explicit Cluster ( Cluster& left, const Cluster& right)
    _cluster = Cluster(left, right) ;

我不理解集群类的功能,直接使用 BinTree 可能更容易。

【讨论】:

以上是关于依赖于类成员属性的类实例成员的主要内容,如果未能解决你的问题,请参考以下文章

day6 面向对象基础

Swift 属性

Java常用类

为啥 PySide 会从 Signals 的类成员中隐式创建对象成员?

java中私有的属性、静态成员可以被子类继承吗?

成员内部类