gpt4 book ai didi

c++ - 我仍然无法传递对 Vector 的引用

转载 作者:行者123 更新时间:2023-11-27 23:32:59 26 4
gpt4 key购买 nike

我在 this 中问过类似的问题发布并从回复中学习但是

我仍然无法让它工作。

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 = 新词典”

错误是:

“没有运算符”=匹配这些操作数。

我正在尝试做的是在新树出现时创建一个新的 Node*s vector

实例化。将对新 vector (tree_dict) 的引用传递给节点

构造函数,它将把引用传递给每个新的 Node 实例

(Node* left 和 Node* right)可以在

将引用传递给它们的子节点。

所以每个 Tree.tree_dict 都是一个 vector ,包含指向每个 Node* 的指针

树。我需要一些帮助。

最佳答案

tree_dict = new Dictionary;

意思是“在堆上分配一个新的 Dictionary 对象,并将指向它的指针存储在 tree_dict 中”。不幸的是,tree_dict 不是指针。

tree_dict = Dictionary();

这表示“创建一个新的 Dictionary 对象,并将其复制到 tree_dict 中。”

关于c++ - 我仍然无法传递对 Vector 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3550773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com