私は配列ベースのツリーを使って変更されたプリオーダートラバーサルを行う必要がある宿題プロジェクトに取り組んでいます。それを使用するには関数に渡しますが、関数内でエラーが発生し続けています。つまり、int
からint(*)[4]
への無効な変換であり、その理由を理解できないようです。すべてのヘルプをいただければ幸いですエラー:関数呼び出しでintからint(*)[4]への変換が無効
#include <iostream>
#include <fstream>
char code[10];
void preOrder(int tree[][4], int index, int treeDepth)
{
int tempIndex;
if(tree[index][2] == -1 && tree[index][3] == -1)
{
std::cout << char(tree[index][1]) << ": ";
for(int i = 0; i < treeDepth; i++)
std::cout << code[i];
std::cout << "\n"
}
else
{
for(int i = 0; i < 2; i++)
{
code[treeDepth] = 0;
tempIndex = tree[index][2];
preOrder(tree[index][2], tempIndex, treeDepth + 1);
code[treeDepth] = 1;
tempIndex = tree[index][2];
preOrder(tree[index][3], tempIndex, treeDepth + 1);
}
}
return;
}
int main()
{
int numNodes = 0, i = 0, j = 0;
int root = 0, treeDepth = 0;
int numcols = 4;
std::fstream inFile;
inFile.open("tree.dat");
inFile >> root;
inFile >> numNodes;
int huffmanTree[numNodes][numCols];
for(i = 0; i < numNodes; i++)
for(j = 0; j < numCols; j++)
inFile >> huffmanTree[i][j];
preOrder(huffmanTree, root, treeDepth);
inFile.close();
return 0;
}
:
は、ここに私のコードのコピーです。 また、私はポインタを使用することはできませんし、グローバルとしてhuffmanTreeを宣言することもできますが、どちらかを動作させる方法を理解できませんでした。そしてそれが置かれたすべての方法にも申し訳ありません。これは私の初めての投稿です。標準C++ではこれは許可されていません:ライン67上の誤りについて
ola.cpp: In function ‘void preOrder(int (*)[4], int, int)’:
ola.cpp:28:53: error: invalid conversion from ‘int’ to ‘int (*)[4]’ [-fpermissive]
ola.cpp:10:6: error: initializing argument 1 of ‘void preOrder(int (*)[4], int, int)’ [-fpermissive]
ola.cpp:31:53: error: invalid conversion from ‘int’ to ‘int (*)[4]’ [-fpermissive]
ola.cpp:10:6: error: initializing argument 1 of ‘void preOrder(int (*)[4], int, int)’ [-fpermissive]
ola.cpp: In function ‘int main()’:
ola.cpp:67:39: error: cannot convert ‘int (*)[(((sizetype)(((ssizetype)numCols) + -1)) + 1)]’ to ‘int (*)[4]’ for argument ‘1’ to ‘void preOrder(int (*)[4], int, int)’
表現 'tree [index] [2]'は 'int(*)[4]'ではなく 'int'です。エラーが明確になるかどうかはわかりません。 – user657267
ここにエラーがあります: – Jab2ak
あなたのコードの 'numCols'は宣言されていません。それはタイプミスですか、それともあなたに私たちに言っていないエラーが増えていますか? –