【问题标题】:Using a class object in another class在另一个类中使用一个类对象
【发布时间】:2017-08-16 15:58:43
【问题描述】:

节点类

作为树实现的一部分,您应该实现一个 Node 类。每个节点都应该包含一个 Customer 对象、指向左右子节点的指针以及(可选的)父节点。

所以,目前我有一个这样的客户类:

class Customer {
public:
    Customer(void);
    Customer(string,char,int);
};

在我的节点类中,如何在链接两个文件时创建客户对象?

我是否只在我的节点头文件中包含以下内容?

#include "Customer.h"

class Node {
public:

    //Customer class
    class Customer {
    public:
        Customer(void);
        Customer(string,char,int);
    }

Node(void); //default constructor
Node(string,char,int); //Node constructor with customer details

Node* left;
Node* right;
Node* parent;

};

在node.cpp文件中将值传递给节点:

//Constructor
Node::Node(string x, char y, int z) {

        lastName = x;       
        firstInitial = y;   
        balance = z;        
}

如何将客户对象的值传递给节点构造?

【问题讨论】:

    标签: c++ class binary-search-tree nodes


    【解决方案1】:

    我是否只在我的节点头文件中包含以下内容?

    没有。您只需在Node 中使用Customer 类型的对象。

    #include "Customer.h"
    
    class Node {
       public:
    
          Node(void); //default constructor
          Node(string,char,int); //Node constructor with customer details
    
          Node* left;
          Node* right;
          Node* parent;
          Customer customer;
    };
    

    将构造函数实现为:

    Node::Node() : left(nullptr),
                   right(nullptr),
                   parent(nullptr),
                   customer() {}
    
    Node::Node(string x, char y, int z) : left(nullptr),
                                          right(nullptr),
                                          parent(nullptr),
                                          customer(x, y, z) {}
    

    【讨论】:

    • 抱歉,我在创建节点时有一个后续问题,我该如何将客户对象的值传递到节点构造中?
    • 感谢您提供非常有帮助的说明!
    【解决方案2】:

    您只需像以前一样包含标头,然后在您的 Node 类中声明一个 Customer 对象(如您所愿,私有/受保护/公共)。当您声明一个 Node 对象时,首先要构造的是类中的对象,然后才是类本身。因此,如果您在两个带有类名的构造函数中都有一个 cout,那么当您要声明一个 Node 对象时,您会看到:

    客户的构造函数 Node的构造函数

    另外,如果要指定如何在Node构造函数中构造Customer对象,可以使用初始化列表

    class Node
    {
    public:
        Customer obj;
        Node(string,char,int);
    }
    

    然后在 .cpp 文件中像这样定义 Node 构造函数:

    Node :: Node(string x,char y,int z) : obj(x, y, z) {
    
    }
    

    这只是一个例子。初始化obj时可以使用静态值,也可以为Node构造函数获取更多参数等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多