在常量表达式C ++中不可用的值

时间:2019-02-02 00:17:29

标签: c++

以下代码在C ++中,我遇到值错误,不能在常量表达式中使用


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 left,value * 10 + node-> left-> val>);


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

1 个答案:

答案 0 :(得分:5)

您想使用make_pair来创建对象,并自动设置模板类型:

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

与右侧相同。