【发布时间】:2021-12-06 09:13:23
【问题描述】:
请找到下面的代码。
template<typename T>
T GetValueFromDataType(Value &value)
{
T jsonValue;
if (value.IsString())
{
assert(value.IsString());
jsonValue = value.GetString(); //here error is showing
return jsonValue ;
}
else if (value.IsInt())
{
assert(value.IsInt());
jsonValue = value.GetInt();
return jsonValue;
}
else if (value.IsDouble())
{
assert(value.IsDouble());
jsonValue= value.GetDouble();
return jsonValue;
}
else if (value.IsBool())
{
assert(value.IsBool());
jsonValue = value.GetBool();
return jsonValue;
}
}
jsonValue 在另一个函数中返回。在那里,我将返回变量声明为 int。理想情况下,它应该采用 int 大小写。但它给出了编译错误。
错误 C2440 '=':无法从 'const char *' 转换为 'int'
有没有办法使用上面的代码或任何其他构造
【问题讨论】:
-
代码没有多大意义,为什么你在
if之后assert -
也许你想使用
constexpr if(即便如此它很可能不是上面代码当前显示的方式) -
此问题显示的代码不符合 stackoverflow.com 对 minimal reproducible example 的要求。这意味着这里的任何人都不太可能最终回答这个问题。但最多只能猜测。你应该edit你的问题来展示一个最小的例子,不超过一两页代码(“最小”部分),其他人都可以剪切/粘贴、编译、运行和重现所描述的问题(“可重现”部分)完全如图所示(这包括任何辅助信息,例如程序的输入)。请参阅How to Ask 了解更多信息。
-
它的 rapidjson 需要断言,否则会出错
标签: c++ json function templates compiler-errors