在另一个类中使用类对象

时间:2017-03-23 21:19:51

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

节点类

作为树实现的一部分,您应该实现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;        
}

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

2 个答案:

答案 0 :(得分:4)

  

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

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

#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) {}

答案 1 :(得分:0)

您只需按原样包含标题,然后在Node类中声明Customer对象(private / protected / public,如您所愿)。当你声明一个Node对象时,构造的第一件事是你的类中的对象,然后才是类本身。所以,如果你在两个带有类名的构造函数中都有一个cout,当你要声明一个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构造函数获取更多参数等等。