次のプログラムにはA
、非静的関数を持つクラスがありますvoid add()
。add()
セット内の各要素に対してイテレータを使用して呼び出したいのですが、最後の要素でエラーが発生します。
どうすれば修正できますか?
#include <iostream>
#include <set>
using namespace std;
class A
{
private:
int a;
public:
A(int x) { a = x; }
void add() {a = a + 1; }
bool operator<(A x) const { return a < x.a; }
};
int main()
{
//type of the collection
typedef set<A> IntSet;
//define a IntSet type collection
IntSet col1;
IntSet::iterator pos;
//insert some elements in arbitrary order
col1.insert(A(3));
col1.insert(A(4));
col1.insert(A(5));
//iterator over the collection and print all elements
for(pos = col1.begin(); pos != col1.end(); ++pos)
{
(*pos).add();
// ERROR!: Member function 'add' not viable:
// 'this' argument has type'const value_type'
// (aka 'const A'), but function is not marked const
}
cout << endl;
}