【问题标题】:qt pointer to qmap get valueqt 指向 qmap 的指针获取值
【发布时间】:2020-09-07 19:16:34
【问题描述】:

我有一个函数需要访问 qmap 指针对象的值。

void SomeClass::SomeFunction(QMap<qint64, bool>* times, qint64 startPoint, qint64 endPoint)
{
    //Here I want to check the value at an existing index.
}

我尝试了什么:

times[key]; 

和:

&times[key];

和:

&times[key] == 0;

两者都给出了错误的结果(值为真,但我期待的是假)。

【问题讨论】:

  • 对我来说并不清楚 startPoint 和 endPoint 是什么?这些是钥匙吗?这是否意味着我应该从 startPoint 迭代到 endPoint??
  • @ΦXocę웃Пepeúpaツ 这些只是在映射中用作键的整数。在图像的右侧,您可以看到变量的确切类型。
  • 那么你可以使用“包含”方法...@Sven

标签: c++ qt qmap


【解决方案1】:

在 qt 中,qmap 有一个方法:contains

times->contains(startPoint)

所以要走的路是:

if (times->contains(startPoint))
{
    ....
}

更新:

要获取指针的值,您需要了解运算符的优先级,即您必须这样做:

std::map<int, bool>*x = new std::map<int, bool>();
x->insert ( std::pair<int, bool>(0,false) );
x->insert ( std::pair<int, bool>(5,true) );
bool flag = (*x)[0];
std::cout << "at 0: " << flag  << std::endl;

flag = (*x)[5];
std::cout << "at 5: " << flag << std::endl;

在你的情况下

bool flag = (*times)[startPoint];

【讨论】:

  • contains 如果键存在则返回 true,而不是键处映射的实际值。我想获取键为特定值的地图的值。
  • 好的...现在我知道您在哪里遇到问题...使用 bool 标志 = (*times)[startPoint];
  • 请查看我的更新并告诉我...@SvenvandenBoogaart
猜你喜欢
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-24
  • 1970-01-01
相关资源
最近更新 更多