C++ 在C+中初始化集合迭代器+;
我刚刚升级了一个名为RogueWave的第三方库,用于数据库功能 但是,我遇到了一个非常愚蠢的编译错误,我不太确定它在抱怨什么:C++ 在C+中初始化集合迭代器+;,c++,aix,rogue-wave,C++,Aix,Rogue Wave,我刚刚升级了一个名为RogueWave的第三方库,用于数据库功能 但是,我遇到了一个非常愚蠢的编译错误,我不太确定它在抱怨什么: typedef std::set< EVBusCalOverride > OverrideSet; OverrideSet overrides; OverrideSet::iterator itor = this->overrides.begin( ); while( itor != this->overrides.end( ) )
typedef std::set< EVBusCalOverride > OverrideSet;
OverrideSet overrides;
OverrideSet::iterator itor = this->overrides.begin( );
while( itor != this->overrides.end( ) )
RWDate是属于RogueWave库的日期类型变量
我不确定这会如何影响迭代器初始化。有人能告诉我是什么导致了这一现象吗?看起来覆盖是常量。这段代码是const方法的一部分吗?在这种情况下,需要初始化迭代器,如下所示:
OverrideSet::const_iterator itor = this->overrides.begin( );
错误消息显示: …::常量迭代器
我猜这是在
const
方法中调用的。roguewave是一个非常古老的库
大多数集合有两种类型的迭代器,iterator
允许您更改成员,而const_iterator
则不允许更改成员
std::set
是该规则的一个例外,因为您不能修改成员,所以所有迭代器都是常量。但是,它们仍然支持迭代器
和常量迭代器
,通常一个是另一个的别名,但roguewave显然不支持
将代码中的
iterator
更改为const\u iterator
可能会解决问题,但我建议您在可能的情况下更改STL的版本。显然不是正确答案,在我看来,根本不是答案const_
之所以存在,是因为begin()
返回const_迭代器
forstd::set
上面的文章链接一直在加载,然后只是对我说STL是标准库的批评,尽管std::set肯定是STL的一部分。
class EVBusCalOverride
{
private:
RWDate overrideDate;
bool businessDay;
};
OverrideSet::const_iterator itor = this->overrides.begin( );