C++ 元组布尔值不变
我有一个小问题,改变元组布尔值。有人知道布尔值是如何保持不变的吗?函数C++ 元组布尔值不变,c++,class,tuples,C++,Class,Tuples,我有一个小问题,改变元组布尔值。有人知道布尔值是如何保持不变的吗?函数setState()查找搜索的键!非常感谢你的帮助 keyManager.h class keyManager { private: std::vector<std::tuple<std::string, bool>> productKeys; public: void addProductKey(std::string key); std::tuple<std::str
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();
};
类密钥管理器
{
私人:
std::vector productkey;
公众:
void addProductKey(标准::字符串键);
std::元组getProductKey(int索引);
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;
}
}
}
void keyManager::addProductKey(std::string key)
{
productKeys.emplace_back(key,false);
}
std::tuple keyManager::getProductKey(int索引)
{
返回productKeys[索引];
}
void keyManager::setState(std::string searchKey,bool状态)
{
对于(int x=0;x
main()
keyManager-kManager;
kManager.addProductKey(KEY_1);
kManager.setState(KEY_1,true);
auto t=kManager.getProductKey(0);
std::cout在keyManager::setState
行中
auto t = productKeys[x];
复制、使用
auto& t = productKeys[x];
auto& t = productKeys[x];
而是在keyManager::setState
行中获取对productKeys[x]
的引用
auto t = productKeys[x];
复制、使用
auto& t = productKeys[x];
auto& t = productKeys[x];
相反,为了获取对productKeys[x]
的引用,此行将复制您的元组
auto t = productKeys[x];
切换到引用
auto& t = productKeys[x];
此行将复制您的元组
auto t = productKeys[x];
切换到引用
auto& t = productKeys[x];
问题出在这一行:
auto t = productKeys[x];
t
被推断为std::tuple
类型,=
触发tuple的copy assignment操作符,该操作符实际使t
a复制productkey[x]
在t
上执行的所有操作仅影响t
。
您应该强制编译器推断t
作为引用(使用类型std::tuple&
),如下所示:
问题出在这一行:
auto t = productKeys[x];
t
被推断为std::tuple
类型,=
触发tuple的copy assignment操作符,该操作符实际使t
a复制productkey[x]
在t
上执行的所有操作仅影响t
。
您应该强制编译器推断t
作为引用(使用类型std::tuple&
),如下所示: