Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中初始化集合迭代器+;_C++_Aix_Rogue Wave - Fatal编程技术网

C++ 在C+中初始化集合迭代器+;

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( ) )

我刚刚升级了一个名为RogueWave的第三方库,用于数据库功能

但是,我遇到了一个非常愚蠢的编译错误,我不太确定它在抱怨什么:

 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_迭代器
for
std::set
上面的文章链接一直在加载,然后只是对我说STL是标准库的批评,尽管std::set肯定是STL的一部分。
class EVBusCalOverride
{

   private:
   RWDate overrideDate;
   bool   businessDay;
};
OverrideSet::const_iterator itor = this->overrides.begin( );