std ::マップとテンプレートクラス内のネストされた構造体:: const_iteratorの?
質問
folowingコードは、反復子が宣言されている行に構文エラーを生成します
template <typename T>
class A
{
public:
struct B
{
int x, y, z;
};
void a()
{
std::map<int, B>::const_iterator itr; // error: ; expected before itr
}
std::vector<T> v;
std::map<int, B> m;
};
Aはテンプレートクラスである場合にのみ発生します。このコードで間違っては何ですか?私はAのうち、Bを移動すると、コードが正常にコンパイルされます。
解決
あなたは型名が必要になります:
typename std::map<int, B>::const_iterator itr;
イテレータは依存タイプ(Bに依存)であり、あなたがこのような状況を持っている場合、コンパイラは、型名と、それを明確にする必要があります。
ここでの問題の合理的な議論がありますするます。
所属していません StackOverflow