gpt4 book ai didi

c++ - 自定义类的C++数组,没有匹配的函数调用

转载 作者:行者123 更新时间:2023-12-02 10:17:30 26 4
gpt4 key购买 nike

我正在构建一个霍夫曼编码树,我想创建一个数组,其中每个位置都包含一个单独的树,如代码所示:

// Number of initial nodes
int number;
cin >> number;
int* weights = new int[number];

for (int i = 0; i < number; i++)
cin >> weights[i];

// Convert to huffman tree with one element
intHuffTree* tree = new intHuffTree[number];
for (int i = 0; i < number; i++) {
tree[i] = intHuffTree(weights[i]);
}

该类的定义如下:

// Huffman tree with integers
class intHuffTree {
private:
// Root of the tree
intHuffNode* Root;

public:
// Leaf constructor
intHuffTree (int freq) { Root = new intLeafNode(freq); }

// Internal constructor
intHuffTree (intHuffTree* l, intHuffTree* r) {
Root = new intIntlNode(l->root(), r->root());
}

// Destructor
~intHuffTree() {};

// Get root
intHuffNode* root() { return Root; }

// Root weight
int weight() { return Root->weight(); }
};

编译时出现以下错误:

main.cpp: In function ‘int main()’:
main.cpp:19:47: error: no matching function for call to ‘intHuffTree::intHuffTree()’
intHuffTree* tree = new intHuffTree[number];
^

我不知道为什么我不能像对 int数组那样初始化数组,有没有可能的解决方案?

非常感谢!

最佳答案

intHuffTree* tree = new intHuffTree[number];

上面的语句正在创建一个intHuffTree数组。该数组将具有“数字”元素。每个元素的类型为intHuffTree。要创建每个元素,编译器需要代码中缺少的默认构造函数,因为您提供了重载的构造函数。

如果您打算使用“number”个元素创建单个树,则需要将其写为
intHuffTree* tree = new intHuffTree(number);

如果打算创建intHuffTree的'number'元素数组,则需要添加不带参数的构造函数。
intHuffTree () { /* Do the right things here. */ }

关于c++ - 自定义类的C++数组,没有匹配的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61457826/

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