You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 10:30:58