こんにちは、C++ で void ポインターを学習し始めたばかりで、現在、各ノードに格納されている値が値への void ポインターであるバイナリ ツリーを作成しています。
struct TreeNode
{
int count;
void* data;
TreeNode *left;
TreeNode *right;
};
問題は、最初のメソッド追加メソッドで発生しました。私のメソッドは int aa パラメーターを受け取り、何も返さないようになりました。最初に、新しいノードを作成します。そのためには、整数を void にキャストする必要があります。プログラムがコンパイルされ、最初の要素がルートに正しく追加されますが、別の番号をメソッドに送信すると、ルートに再度格納されます。したがって、メインに tree.addToTree(12); のようなものがある場合 tree.addToTree(13); 最初に 12 を保存するよりも、else ステートメントの直後 (以下のコード) ルート -> データ i 13 よりも.
void Tree::addToTree(int num)
{
if(root==NULL){
root= new TreeNode();
root->data=#
//((int *)(root->data)) = num;//i tried to convert to void* in this way but it give me segmentation fault
root->left=NULL;
root->right=NULL;
}
else{
//here root value is already changed
int *intPtr = static_cast<int*>(root->data);
cout << "key2" << *intPtrT << endl;
//TreeNode* current= insert(num,root);
}
}
私が理解したように、私は &num を使用しているため、パラメーターは常に 1 か所で引き裂かれ、ルートは &num に「接続」され、それも変化します。
解決策を見つけようとしましたが、うまくいきませんでした。int を void ポインタにする方法はありますか?