Как посмотреть, если указатель в карте указателей не равен 0 - PullRequest
1 голос
/ 16 февраля 2012

Я создал карту, мне нужна эта карта в другом потоке, поэтому я сделал указатель, который указывает на мою карту и отправил ее в другой поток. Но когда я хочу посмотреть, не является ли значение на карте NULL (указатель), я получаю сообщение об ошибке.

Это пример кода:

#include <iostream>
#include <vector>
#include <map>

using namespace std;


int main()
{
    int test = 1;

    map<int,void *> handle;
    map<int,void *> * handle2;

    handle[0] = &test;

    handle2 = &handle;


    if(*handle2[0])
    {
        cout << "Works\n";
    }

    system("Pause");


    return false;
}

Это ошибка, которую я получаю:

ошибка C2451: условное выражение типа 'std :: map <_Kty, _Ty>' недопустимо

Как я могу проверить указатель на 0 в этом случае?

Ответы [ 2 ]

3 голосов
/ 16 февраля 2012

handle2 - указатель на карту, поэтому handle2[0] (эквивалент *handle2) - сама карта.Как говорит ошибка, это не может быть использовано как условное выражение.

Если вы хотите проверить, является ли handle2 нулевым, просто скажите handle2;для элемента карты с ключом 0 вы хотите (*handle2)[0].

2 голосов
/ 16 февраля 2012
if(*handle2[0])

Одна возможность:

if((*handle2)[0])

другая (немного загадочно для меня):

if(handle2[0][0])
...