Я строил дерево кодирования Хаффмана и хотел создать массив, в котором каждая позиция содержит отдельное дерево, как показано в следующем коде:
// 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
, и есть ли какое-нибудь возможное решение?
Большое спасибо!