Iは円形構造体及び円を格納するためのリストを持っている:C++でコールバック関数を使って値を返すことはできますか?
struct circle
{
float r;
int id;
};
list<circle> circleList;
Iは、円(半径とID)に関する情報をXML文書を解析し、リスト内で次に格納するTinyxmlを使用している(これは主な機能に)
circle c;
for(TiXmlElement* e = objectTree; e != NULL; e = e->NextSiblingElement())
{
c.r = atof(e->Attribute("r"));
c.id = atoi(e->Attribute("id"));
circleList.push_back(c);
}
それは罰金働いて、私は値を印刷するfor_eachを使用し、それが動作しますが、円はリストに格納されています。しかし、コードのある時点では、各円の半径を取得する必要があります。ここで
float radius = for_each(circleList.begin(), circleList.end(), returnRadius);
コールバック関数です:
float returnRadius(circle &data)
{
return data.r;
}
しかし、私は多くのことを得ている私は、リスト内の円を保存するループの直後、メイン機能でこれを実行しようとしましたおそらく私がradiusという値を作成し、for_eachによって返された値を格納しようとしている行が原因である可能性があります。これはまったく間違っています。しかし私の意図は、コールバック関数returnRadiusによって返される値を取得する方法を見つけることです。これを行う方法はありますか?私はこれをしようとすると
は:
float radius = for_each(circleList.begin(), circleList.end(), returnRadius);
私はこれらのエラーを取得:
error: cannot convert ‘float (*)(circle&)’ to ‘float’ in initialization
float radius = for_each(circleList.begin(), circleList.end(), returnRadius);
私はfor_each機能は半径を返す作るしようとしているので、私は理解して
が、何Iコールバック関数が半径を返すことが本当に必要なのか(やり方がわからないのですか)、この情報を取得しているのはコールバックです。
エラーを表示すると役立ちます。 –
あなたは 'for_each(circleList.begin()、circleList.end()、returnRadius);'と正確に何をしますか?各円はそれ自身の半径を持っているので返りますか? – NathanOliver
@ NathanOliver各円の半径... for_eachは円のリストを反復し、returnRadiusは各半径を返します – jaryl