gpt4 book ai didi

c++ - 动态分配自定义类的数组并重载运算符

转载 作者:行者123 更新时间:2023-11-28 05:03:27 26 4
gpt4 key购买 nike

最近几天我一直在想办法为我创建的这个类创建一个动态分配的数组。其中一个包括我制作的另一个类(class)

这里是类:

template<typename T>
class BST // a binary search tree class
{
private:
Node<T> * root;
int size;
public:
BST()
{
root = NULL;
size = 0;
}

/*void * BST::operator new[](size_t a) //tried it both with the "BST::" and without
{
void * p = malloc(a);//24
return p;
}*/
//there are more functions that i cut out
}

template <typename T>
class Node //a node for a binary search tree
{
public:
int key;
T data;
Node * left;
Node * right;
Node * parent;
//public:
Node<T>()
{
key = NULL;
data = NULL;
left = NULL;
right = NULL;
parent = NULL;
}
//more stuff below this but it's just getting and setting the data
}

main() 中,我将尝试用这一行创建一个 BST 对象数组:

BST<char> * t = new BST<char>[ n ]; //the user will give the value for int n

问题是它在运行时只生成一个 BST 对象。我做了一些研究并尝试过重载 new[] 运算符,但它什么也没做。

谁能解释一下这样做的正确方法是什么?

最佳答案

数组中确实有多个对象,但 t 不是数组。

t 是一个指向 one BST 的指针,调试器这样显示它——调试器不知道它是指向数组第一个元素的指针。

如果你想把它看成一个数组,你需要告诉调试器这样做。
您在“监视”窗口中执行此操作,我认为语法将是 t,2 以显示前两个元素。

关于c++ - 动态分配自定义类的数组并重载运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45366175/

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