良い一日です、
私の物はそれほど良くないように見えるからです。
私はクラスCを持っていますが、これには子はありませんが、別のクラスのインスタンスへのポインターで作成されたベクトルがあります。これをBと呼びましょう。
class C
{
public:
...
std::vector<B*> elements;
...
}
Bには、別のクラスのインスタンスへのポインターのベクトルもあります。これをAと呼びましょう。
class B
{
public:
...
std::vector<A*> elements2;
...
}
Cには、elementsとelements2の要素を反復処理するメソッドがあり、次のように機能します。
std::vector<B*>::iterator it1;
std::vector<A*>::iterator it2;
for (it1=this->elements.begin(); it1!=this->elements.end(); ++it1)
{
for (it2 = it1->elements2.begin(); it12=it1->elements2.end(); ++it2)
{
it2->do_something(); //method of class A
}
}
しかし、コンパイラ(g ++)は、(クラス階層)のoperator!=に一致するものがないと私に言い続けます。
誰かが私が間違ったことを知っていますか?'<'のような他の演算子も機能しないようです。
私は初心者ではありませんが、C ++(元Pythonプログラマー)でイテレーターを使用するのは初めてであり、コードの何が問題になっているのかを実際に理解することはできません。
事前に助けてくれてありがとう、私はこれで髪を失っています!
編集:参照用にエラー全体を追加しています。私は質問に合うようにそれを編集しました、私は何も台無しにしないことを望みます:
'it1!=((C *)this)-> C :: elements.std :: vector <_Tp、_Alloc> :: end with _Tp = B *、_Alloc = std::の'operator!='に一致しませんアロケータ'</p>