以下代码在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>);
我无法弄清楚为什么在这里遇到此错误?
答案 0 :(得分:5)
您想使用make_pair
来创建对象,并自动设置模板类型:
st.push(make_pair(node->left, value*10 + node->left->val));
与右侧相同。