C++ の初心者で、数日後に予定されているプロジェクトのバイナリ ヒープ計算機を作成しようとしています。バイナリ ヒープに到達する前に、バイナリ ツリー構造体をヒープのスーパー クラスとして記述します。
私はまだ、ポインターと参照、および割り当て時にそれぞれがどのように見えるか、および何かをポインターまたは参照として定義する必要がある場合に頭を悩ませようとしています。
とにかく、ここに私が興味を持っているコードのいくつかがあります:
#include "BinaryTree.h"
int main(void){
BinaryTree tempTree = new BinaryTree();
BinaryNode* ptrToRoot;
ptrToRoot = tempTree.getRootNode();
int inputArr = { 5, 2, 7, 10, 11, 20, 1};
for(int i = 0; i < sizeof(inputArr) / sizeof(inputArr[0]); i++){
tempTree.binaryTreeInsert(ptrToRoot, inputArr[i]);
}
tempTree.inOrderPrint(ptrToRoot);
}
また、binaryTreeInsert と inOrderPrint の両方の呼び出しでエラーが発生します。どちらも引数として ptrToRoot を取ります。エラーには、「無効な引数...有効な候補は BinaryNode *, int.
しかし、Eclipse で各引数にカーソルを合わせると、どちらも必要な型であることが表示されます。
ポインターの定義が間違っていますか? 参考までに、BinaryTree クラスのヘッダー ファイルを次に示します。
#ifndef BINARYTREE_H_
#define BINARYTREE_H_
#include "BinaryNode.h"
struct BinaryTree {
BinaryTree();
virtual ~BinaryTree(){}
BinaryNode rootNode;
int noOfNodes;
BinaryNode* getRootNode(){ return rootNode; }
int countNodes(BinaryNode* ptRootNode);
bool binaryTreeContains( BinaryNode* ptRootNode, int element);
void binaryTreeInsert(BinaryNode* ptRootNode, int element);
void preorderPrint( BinaryNode *ptRootNode );
void postorderPrint( BinaryNode *ptRootNode );
void inorderPrint( BinaryNode *ptRootNode );
};
#endif