c++ - 值在常量表达式 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 >);
我无法弄清楚为什么会在这里遇到此错误?
解决方案
你想用它make_pair
来创建一个对象,自动设置模板类型:
st.push(make_pair(node->left, value*10 + node->left->val));
右侧也一样。
推荐阅读
- python - 如何删除目标变量对应的na值
- sql - SQL JOIN 给出双倍值
- typescript - 具有枚举值的 TypeGraphql InputType 字段不允许输入字符串(引用文本)
- python - DevStack 放置-api 没有启动
- java - 如何将多个段落包装在一个元素中?
- r - 地址正确时如何修复错误的邮政编码
- java - 在 android 启动器中,如何阻止对某些应用程序的访问?
- c++ - 固定分配 std::vector
- python - 尝试仅使用 [HH:DD] 转换 Pandas 列,但返回 [YYYY-DD-MM HH:MM:SS]
- security - 如何在 Yesod 应用程序中向所有端点添加标头?