我在这篇文章中问了一个类似的问题并从回复中学到了但是
我仍然无法让它工作。
test_vector.h
#include <vector>
class Node
{
public:
std::vector<Node*>& node_dict;
int depth;
char* cargo;
Node* left;
Node* right;
Node( int a_depth, std::vector<Node*>& a_dict);
~Node();
};
class Tree
{
public:
std::vector<Node*>tree_dict;
Node* root;
Tree();
Tree(const Tree &original);
};
test_vector.cpp
#include "test_vector.h"
using namespace std;
typedef std::vector<Node*>Dictionary;//This seems like a good idea.
typedef std::vector<Tree*>Population;
Population pop;
int Tree_depth = 3;
Node::Node( int a_depth, std::vector<Node*>&a_dict):node_dict(a_dict), depth(a_depth)
{
if (depth <= 0)
{
cargo = "leaf_Node";
left = 0;
right = 0;
node_dict.push_back(this);
return;
}
else;
{
cargo = "Tree_Node";
node_dict.push_back(this);
depth--;
left = new Node(depth, node_dict);
right = new Node(depth, node_dict);
}
return;
};
Node::~Node()
{
delete left;
delete right;
};
Tree::Tree():tree_dict(NULL)
{
****tree_dict = new Dictionary;****
root = new Node(Tree_depth, tree_dict);
};
//copy constructor
Tree::Tree(const Tree &original):tree_dict(NULL)
{
root = NULL;
root = new Node (*(original.root));
};
int main()
{
for (int i = 0;i <= 3; i++)
{
pop.push_back(new Tree());
}
return 0;
}
带星号的行不起作用。“tree_dict = 新词典”
错误是:
"no operator "=" 匹配这些操作数。
我想做的是每当有新树时创建一个新的 Node*s 向量
实例化。将对新向量 (tree_dict) 的引用传递给节点
构造函数,它将将该引用传递给 Node 的每个新实例
(Node* left and Node* right) 可以 push_back 一个指向自己的指针之前
将引用传递给他们的子节点。
所以每个 Tree.tree_dict 都是一个向量,其中包含指向每个 Node* 的指针
那个树。我需要一些帮助。