как избежать копирование указателя в с++
class BinaryTree{
private:
class Node;
Node* m_root;
public:
BinaryTree() : m_root(nullptr) {};
~Binarytree { // some destructor }
const Node* getRoot() const { return m_root; }
Node* getRoot() { return m_root; }
void clearSubTree(Node* root)
{
// clear
root = nullptr;
/* root равен m_root, но при присваении root = nullptr m_root не меняется */
}
};
class BinaryTree::Node
{
private:
Item m_data;
Node* m_left = nullptr;
Node* m_right = nullptr;
public:
// getters, setter, constructor, desturctor
};
int main() {
BinaryTree tree;
// filling tree
tree.clearSubTree(tree.getRoot());
return 0;
}
При вызове в main tree.clearSubTree(tree.getRoot());
в root запишется m_root, но при присвоении m_root не меняется, можете ли вы объяснить почему?
Источник: Stack Overflow на русском