美好的一天,我刚开始学习 C++ 中的 void 指针,现在我正在编写二叉树,其中存储在每个节点中的值是指向值的 void 指针。
struct TreeNode
{
int count;
void* data;
TreeNode *left;
TreeNode *right;
};
问题出现在第一个方法添加方法中。我的方法现在采用 int aa 参数并且不返回任何内容一开始我创建了新节点。为此,我需要将整数转换为 void。程序编译并且第一个元素正确添加到根目录 - 但是当我向方法发送另一个数字时,它再次存储在根目录中。所以如果我主要有类似 tree.addToTree(12); 树.addToTree(13); 比它首先存储 12 和在 else 语句(下面的代码)之后存储 13 的 root-> 数据如何。
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 所以我的参数总是在一个地方撕裂,并且根“连接”到 &num 它也会改变。
我试图找到解决方案但没有成功。有没有办法 cat int 使指针无效?