指向qmap的qt指针获取值

问题描述

我有一个函数需要访问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;

两者均给出错误的结果(该值为true,但我期望为false)。

enter image description here

解决方法

在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];