我正在编写一个包含键值对集合的非平凡类,在编译期间,我收到一个非常奇怪的错误,我无法弄清楚。在函数中,这里与此函数非常相似,但由于所需代码的复杂性而没有上下文,我收到错误:
TValue& operator[](const TKey& key) {
TDict::Node* node = mData.Begin(); // ERROR: 'node' was not declared in this scope
// -_- ... really?
do {
if(node->Data.Key == key) {
return node->Data.Value;
}
} while(node != mData.End());
this->Add(key, TValue());
return this->End()->Data.Value;
}
List<KeyValuePair<TKey, TValue> >
我不是要求纠正这个问题所需的代码,而是要求发生类似错误的潜在情况的概要。
答案 0 :(得分:3)
它扩展到List,其中TKVPair是一个typedef 扩展到KeyValuePair。
它是依赖名称,因此,您应该使用typename
typename TDict::Node* node = mData.Begin();
阅读Where and why do I have to put the "template" and "typename" keywords?了解详情。