-1
私はクラスを持っている:イテレータでクラス関数にアクセスするにはどうすればよいですか?
class Foo
{
std::string name_;
Foo(std::string name)
{
name_ = name;
}
std::string getName()
{
return name_;
}
}
私は、これらのクラスの人口ベクトルいる:
std::vector<Foo *> bar_;
/* ... populate bar_ ... */
std::vector<Foo *>::iterator iter = bar_.begin();
while(iter != bar_.end())
{
std::cout << "Name: " << (*iter)->getName() << std::endl;
}
マイ(* ITER) - >のgetName()はいえ動作していないと、私はこのエラーを取得します:
error: invalid cast from type ‘__gnu_cxx::__normal_iterator
は、あなたが完全なエラーメッセージを投稿することができますしてください?ところで、あなたが実際に持っているものでないならば、あなたは「これらのクラスのベクトル」を持っていると言ってはいけません。あなたのコードは正しいように見えます。エラーは他の場所にある可能性があります。 –
「iter」が増分されないので、それは無限ループです。 'Foo'クラスの定義にセミコロンがないため、これが実際のコードであるかどうかは不明です。 – hmjd
私は、これについて、今はあまり問題を提示していないため-1にします。それをクリーンアップして、実際のコードを投稿すれば、私は再考するでしょう。 –