Форум программистов, компьютерный форум CyberForum.ru

Не найден оператор - C++

Восстановить пароль Регистрация
 
Виталий Щ.
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 66
13.08.2013, 12:34     Не найден оператор #1
Здравствуйте! Проблема такая:
lab.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
#include <map>
#include <string>
#include <iterator>
using namespace std;
 
class cls_CommonAIData : public ifc_AIData
{
public:
    bool get( const string& pKey, void* pValue ) const;
private:
        map< string, void* > mPointers;
};
lab.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "lab.h"
 
bool cls_CommonAIData::get(const string& pKey, void* pValue) const
{
    map<string,string>::iterator it;
 
    if( (it = mPointers.find(pKey)) > 0 )
    {
        pValue = it->second;
        return true;
    }
 
    return false;
}
Ошибка: Ошибка 15 error C2679: бинарный '=': не найден оператор, принимающий правый операнд типа 'std::_Tree<_Traits>::const_iterator' (или приемлемое преобразование отсутствует)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2013, 12:34     Не найден оператор
Посмотрите здесь:

C++ Ошибка в коде. не найден оператор, принимающий правый операнд типа 'int'
не найден оператор, как исправить C++
C++ Помогите исправить ошибку: string не найден оператор
C++ Ошибка : бинарный "<<": не найден оператор, принимающий правый операнд типа point
C++ Конструкторы, приведение типа и ошибка "Не найден оператор, принимающий правый операнд типа 'char *'"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11838 / 6817 / 771
Регистрация: 27.09.2012
Сообщений: 16,910
Записей в блоге: 2
Завершенные тесты: 1
13.08.2013, 12:39     Не найден оператор #2
C++
1
2
3
map< string, void* > mPointers; //Контейнер string,void*
//...
map<string,string>::iterator it;//Итератор string, string
Виталий Щ.
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 66
13.08.2013, 12:40  [ТС]     Не найден оператор #3
Croessmah, Подробнее, пожалуйста, не понял.

Добавлено через 23 секунды
Croessmah, опечатка
Виталий Щ.
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 66
13.08.2013, 12:42  [ТС]     Не найден оператор #4
Croessmah, Ошибка 5 error C2679: бинарный '=': не найден оператор, принимающий правый операнд типа 'std::_Tree<_Traits>::const_iterator' (или приемлемое преобразование отсутствует)

Добавлено через 35 секунд
Croessmah, Поправил, ошибка осталась
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11838 / 6817 / 771
Регистрация: 27.09.2012
Сообщений: 16,910
Записей в блоге: 2
Завершенные тесты: 1
13.08.2013, 12:45     Не найден оператор #5
get - константный метод. В нем нельзя изменять не mutable-члены класса
C++
1
bool cls_CommonAIData::get(const string& pKey, void* pValue) const
mPointers.find вернет const_iterator, а не iterator

C++
1
map<string,void*>::const_iterator it;
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
13.08.2013, 12:47     Не найден оператор #6
C++
1
map<string,void*>::iterator it
написали ведь уже)
Croessmah
13.08.2013, 12:47
  #7

Не по теме:

Цитата Сообщение от monolit Посмотреть сообщение
написали ведь уже)
как бы...
Цитата Сообщение от Виталий Щ. Посмотреть сообщение
Поправил, ошибка осталась

Виталий Щ.
0 / 0 / 0
Регистрация: 20.11.2010
Сообщений: 66
13.08.2013, 13:40  [ТС]     Не найден оператор #8
Croessmah, Проблема была в том что метод константный.
Спасибо, очень выручили!

Добавлено через 50 минут
Croessmah, Пробую не делая метод multiple, исправить ошибку. Почему не спасает
C++
1
const map<string,string>::iterator it = mPointers.find(pKey);
И как вообще можно исправит ситуацию, не меняя того что метол const?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2013, 13:42     Не найден оператор
Еще ссылки по теме:

Бинарный оператор не найден C++
Error C2679: бинарный ">>": не найден оператор, принимающий правый операнд C++
C++ Не найден оператор, принимающий правый операнд

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11838 / 6817 / 771
Регистрация: 27.09.2012
Сообщений: 16,910
Записей в блоге: 2
Завершенные тесты: 1
13.08.2013, 13:42     Не найден оператор #9
Цитата Сообщение от Виталий Щ. Посмотреть сообщение
не меняя того что метол const
C++
1
map<string,void*>::const_iterator it = mPointers.find(pKey);
Yandex
Объявления
13.08.2013, 13:42     Не найден оператор
Ответ Создать тему
Опции темы

Текущее время: 16:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru