VS Code误报错误:C++代码无问题却提示错误求助
问题修复方案
你的代码里存在一个直接导致错误的逻辑问题:
setRight方法实现错误,本该给right指针赋值的代码写成了给left赋值,这会导致a.right始终是nullptr,当你尝试访问a.right->value时,会触发空指针解引用错误,这就是编译器/运行时报错的核心原因。
修正后的代码
#include<iostream> using namespace std; class Node{ public: Node * left; Node * right; int value; Node(int v) : value(v), left(nullptr),right(nullptr) {}; void setLeft(Node& n){ left = &n; } void setRight(Node& n){ right = &n; // 此处将left改为right,修复指针赋值错误 } private: }; int main() { Node a(10); Node b(20); Node c(30); a.setLeft(b); a.setRight(c); cout << a.value << endl << a.left->value << endl << a.right->value << endl << "If you read this I am working correctly!" << endl; return 0; }
额外注意事项
你通过引用传递对象并保存其地址的方式存在潜在风险:如果被引用的对象生命周期提前结束(比如临时对象销毁、局部变量出作用域),会产生悬空指针问题。当前代码里的a、b、c都是main函数的局部变量,生命周期覆盖了访问过程,所以没问题,但后续扩展代码时,建议考虑用动态分配内存(如new Node)或智能指针来管理对象生命周期。
内容的提问来源于stack exchange,提问作者EarlyBitcoiner
相关产品推荐
相关产品推荐

