我的特例涉及到一个自定义迭代器,但这个问题是一个普遍问题。我不确定如何写这个后缀增量方法的返回类型:模板类方法的正确签名返回它自己的类型
template<typename T>
struct MyIterator {
size_t loc;
MyIterator operator++(int) {
MyIterator temp(*this);
++loc;
return temp;
}
};
这将编译,但这样做的:
template<typename T>
struct MyIterator {
size_t loc;
MyIterator<T> operator++(int) {
MyIterator<T> temp(*this);
++loc;
return temp;
}
};
两个其他配置也正常工作(即把<T>
仅在MyIterator
的一个实例上)。有没有“正确”的方式来写这个?有关系吗?
没关系。你看到的是*注入的类名* – NathanOliver