aix — Инициализация итератора набора в переполнении стека

Я только что обновил стороннюю библиотеку RogueWave, которую я использую для функций базы данных.

Но я получаю действительно глупую ошибку компиляции, и я не совсем уверен, на что она жалуется:

 typedef std::set< EVBusCalOverride > OverrideSet;
OverrideSet overrides;

OverrideSet::iterator itor = this->overrides.begin( );
while( itor != this->overrides.end( ) )

Я получаю сообщение об ошибке в строке инициализации итератора, говорящее

An object or reference of type "std::set<EVBusCalOverride,std::less<EVBusCalOverride>,std::allocator<EVBusCalOverride> >::iterator"cannot be initialized with an rvalue of type    "std::_Tree<std::_Tset_traits<EVBusCalOverride,std::less<EVBusCalOverride>,std::allocator<EVBusCalOverride>,0> >::const_iterator".

А EVBusCalOverride это просто класс

class EVBusCalOverride
{

private:
RWDate overrideDate;
bool   businessDay;
};

RWDate — это переменная типа даты, которая принадлежит библиотекам RogueWave.

Я не уверен, как это влияет на инициализацию итератора. Кто-нибудь может указать мне правильное направление, что может быть причиной этого?

0

Решение

roguewave — очень старая библиотека.

Большинство коллекций имеют два типа итераторов, iterator что позволяет менять членов и const_iterator что нет.

std::set является исключением из этого правила в том смысле, что вы не можете изменять члены, поэтому все итераторы являются постоянными. Однако они все еще поддерживают iterator а также const_iteratorчасто одно является псевдонимом другого, но roguewave, очевидно, этого не делает.

изменения iterator в вашем коде const_iterator возможно исправит, но я бы посоветовал вам изменить версию STL, если это возможно.

5

Другие решения

Похоже, что переопределения являются постоянными. Является ли этот код частью метода const? В этом случае вам нужно инициализировать итератор следующим образом:

OverrideSet::const_iterator itor = this->overrides.begin( );
1

Сообщение об ошибке говорит:

… :: const_iterator

Я думаю, это называется const метод.

1
По вопросам рекламы [email protected]