gpt4 book ai didi

C++ 成员引用基类型 'int' 不是结构或 union

转载 作者:可可西里 更新时间:2023-11-01 15:09:05 25 4
gpt4 key购买 nike

我在 C++ 代码中遇到问题。

我有一个 union StateValue:

union StateValue
{
int intValue;
std::string value;
};

和一个结构StateItem

struct StateItem
{
LampState state;
StateValue value;
};

我有一个方法,它遍历 StateItem 类型的 vector

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 的情况下,我得到以下编译器错误:

Member reference base type 'int' is not a structure or union

我不明白这里的问题。你们中的任何人都可以帮助我吗?

最佳答案

您正在尝试调用 intValue 的成员函数,它的类型为 intint 不是类类型,因此没有成员函数。

在 C++11 或更高版本中,有一个方便的 std::to_string 函数可以将 int 和其他内置类型转换为 std::string :

result += ", \"hue\": " + std::to_string(st.value.intValue);

从历史上看,您必须处理字符串流:

{
std::stringstream ss;
ss << st.value.intValue;
result += ", \"hue\": " + ss.str();
}

关于C++ 成员引用基类型 'int' 不是结构或 union ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21387687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com