1

Vertice(頂点クラス)が設定されているので、 が参照するアイテムのアドレスにs入りたい。言い換えると、Vertice *addressset<Vertice>::iterator it

address = &(*it);

でも、返品

error: assigning to 'Vertice *' from incompatible type
      'const value_type *' (aka 'const Vertice *')

何か案が?

4

2 に答える 2

3

に保存された要素std::setは変更できず、std::set::iterator定数反復子でもあります。つまり、非 const へのポインター (つまり ) に割り当てることができない const へのポインター (つまり ) を取得することを意味し&(*it)ます。const Vertice*Vertice*

のタイプをaddressに変更できますconst Vertice*

const Vertice* address = &(*it);
于 2016-11-01T04:01:17.337 に答える
0

のエントリは、set外部コードによって変更できません ( sets の不変条件に違反する可能性があります)。直接ポインターが必要な場合 (そうすべきではありません)、const Vertice*(安全で、変更されていない) 必要がVertice*ありsetます。それがエラーがあなたに言っていることです。

于 2016-11-01T04:02:30.353 に答える