首页 > 解决方案 > 值在常量表达式 C++ 中不可用

问题描述

以下代码是在 C++ 中我遇到的错误 value is not usable in a constant expression 错误


int sumNumbers(TreeNode* root) {

    stack<pair<TreeNode*, int>> st;
    st.push(make_pair(root, root->val));
    int sum = 0;

    while(!st.empty()){
        pair<TreeNode*, int> temp = st.top();
        st.pop();
        TreeNode* node = temp.first;
        int value = temp.second;

        if(node->left==NULL && node->right==NULL){
            sum += value;
        }

        if(node->left){
            st.push(pair< node->left, value*10 + node->left->val >);
        }

        if(node->right){
            st.push(pair< node->right, value*10 + node->right->val >);
        }
    }

    return sum;
}

错误在该行中:

if(node->left){
            st.push(pair< node->left, value*10 + node->left->val >);
        }

错误是:

第 29 行:字符 37:错误:'node' 的值在常量表达式中不可用 st.push(pair< node->left, value*10 + node->left->val >);


我无法弄清楚为什么会在这里遇到此错误?

标签: c++

解决方案


你想用它make_pair来创建一个对象,自动设置模板类型:

st.push(make_pair(node->left, value*10 + node->left->val));

右侧也一样。


推荐阅读