从c++类返回的指针的地址
Address of a pointer returned from c++ class
我正在用c++编写二进制搜索树程序。我有一个节点类如下:
template<typename T>
class BinaryTreeNode{
private:
T _data;
BinaryTreeNode<T>* _left;
BinaryTreeNode<T>* _right;
public:
T& data() { return _data; }
const T& data() const { return _data; }
BinaryTreeNode<T>* left() { return _left; }
const BinaryTreeNode<T>* left() const { return _left; }
BinaryTreeNode<T>* right() { return _right; }
const BinaryTreeNode<T>* right() const { return _right; }
};
在我的二进制搜索树类中,我有一个添加节点的方法,如下所示
template<typename T>
void BinarySearchTree<T>::_push(BinaryTreeNode<T>** root ,BinaryTreeNode<T>* node){
if(*root == NULL){
*root = node;
}else{
if(node->data() < (*root)->data()){
_push(&((*root)->left()), node);
}else{
_push(&((*root)->right()), node);
}
}
}
我在_push()中得到以下错误:
binary_tree.h:32:9: error: lvalue required as unary ‘&’ operand
_push(&((*root)->left()), node);
^
binary_tree.h:36:9: error: lvalue required as unary ‘&’ operand
_push(&((*root)->right()), node);
^
这个语法有问题吗?有人能解释一下这里出了什么问题吗?
_push(&((*root)->left()), node)
您正在尝试获取从left函数返回的临时地址。
一个很好的建议是,在将类转换为模板类之前,始终测试类的设计问题。这样模板就可以省去一些阴险的指责。
相关文章:
- CUDA:统一内存和指针地址的更改
- 是否可以仅通过将分配的指针地址存储在C++中来分析内存?
- 向指针地址添加 20 个字节偏移量
- 如何理解智能指针的底层指针地址?
- 初学者问题:C++指针/地址 - 和变量之后不是以前?
- 返回数组中值的指针地址
- C++向指针地址添加 4 个字节
- 指针地址的内存偶尔更改了函数前和后返回
- 如何根据指针地址获取指针内容
- C++ 将指针地址传递给函数
- 直接从指针/地址访问数组的元素
- 如何在没有作弊引擎的情况下从其他应用程序获取指针地址?
- 如何保存指针地址,以便另一个指针可以继续处理它
- 间接寻址运算符如何返回带有运算符重载的指针地址
- 使用已删除的指针地址.据我所知,
- 如何保护类外用户可以修改的指针地址?C++
- 多个调用构造函数将更改C 中的成员指针地址
- 类对象指针的向量:如何在指针地址获得价值?C 和SDL_RECT
- Visual Studio C 2K15-在指针地址上获取错误
- 指针地址和参考混乱