【发布时间】:2014-01-27 17:36:27
【问题描述】:
我的 C++ 代码遇到了问题。
我有一个工会StateValue:
union StateValue
{
int intValue;
std::string value;
};
还有一个结构体StateItem
struct StateItem
{
LampState state;
StateValue value;
};
我有一个方法通过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;
}
}
在Hue 的情况下,我收到以下编译器错误:
成员引用基类型'int'不是结构或联合
我无法理解这里的问题。 有谁能帮帮我吗?
【问题讨论】:
-
int没有str()函数。它甚至不是一堂课。 -
请注意,C++11 的新功能是能够在联合中使用非 pod 类型(如
std::string),因此如果您尝试使用不支持 C+ 的旧编译器进行编译+11 然后你会得到一个错误。 -
至于你的问题,你不妨看看函数
std::to_string。 -
编译器也会给出这个错误信息,如果你写了这样的东西:A a; int a = a.FunctionThatReturnsInt();
标签: c++