我在我的C++代码中遇到了问题.
我有一个工会StateValue:
union StateValue
{
int intValue;
std::string value;
};
Run Code Online (Sandbox Code Playgroud)
和结构 StateItem
struct StateItem
{
LampState state;
StateValue value;
};
Run Code Online (Sandbox Code Playgroud)
我有一个方法,它通过一个类型的向量 StateItem
for(int i = 0; i < stateItems.size(); i++)
{
StateItem &st = stateItems[i];
switch (st.state)
{
case Effect:
result += std::string(", \"effect\": ") + st.value.value;
break;
case Hue:
result += std::string(", \"hue\": ") + st.value.intValue.str();
break;
case On:
result += std::string(", \"on\": ") + std::string(st.value.value);
break;
default:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Hue我得到以下编译器错误:
Member reference base type 'int' is not a structure or union
我不明白这里的问题.你能有人帮我吗?
Mik*_*our 11
您正在尝试调用intValue具有类型的成员函数int.int不是类类型,因此没有成员函数.
在C++ 11或更高版本中,有一个方便的std::to_string函数可以转换int和其他内置类型std::string:
result += ", \"hue\": " + std::to_string(st.value.intValue);
Run Code Online (Sandbox Code Playgroud)
从历史上看,你不得不乱用字符串流:
{
std::stringstream ss;
ss << st.value.intValue;
result += ", \"hue\": " + ss.str();
}
Run Code Online (Sandbox Code Playgroud)