节点类
作为树实现的一部分,您应该实现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;
}
如何将客户对象的值传递给节点构造?
答案 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构造函数获取更多参数等等。