我有一个小问题来更改元组布尔值。有谁知道bool的值不会改变吗?函数setState()
查找所搜索的键!非常感谢您的帮助!
keyManager.h
class keyManager
{
private:
std::vector<std::tuple<std::string, bool>> productKeys;
public:
void addProductKey(std::string key);
std::tuple<std::string, bool> getProductKey(int index);
void setState(std::string searchKey, bool state);
keyManager();
~keyManager();
};
keyManager.cpp
void keyManager::addProductKey(std::string key)
{
productKeys.emplace_back(key, false);
}
std::tuple<std::string, bool> keyManager::getProductKey(int index)
{
return productKeys[index];
}
void keyManager::setState(std::string searchKey, bool state)
{
for (int x = 0; x < productKeys.size(); x++)
{
auto t = productKeys[x];
if (std::get<std::string>(t) == searchKey)
{
std::get<bool>(t) = state;
}
}
}
主要()
keyManager kManager;
kManager.addProductKey(KEY_1);
kManager.setState(KEY_1, true);
auto t = kManager.getProductKey(0);
std::cout << std::get<bool>(t) << std::endl;
输出:0
该程序的执行没有错误,因此我假设我在某处发生了错误。
最佳答案
在您的keyManager::setState
行中
auto t = productKeys[x];
复制,使用
auto& t = productKeys[x];
而是获得对
productKeys[x]
的引用。