我应该放什么而不是三个问号?
template <class T>
class B_T
{
public:
typedef _Array_iterator<T, uint32> iterator;
iterator begin();
};
template <class T>
??? B_T<T>::begin()
{
// code here
}
答案 0 :(得分:4)
此:
template <class T>
typename B_T<T>::iterator B_T<T>::begin()
{
// code here
}
需要typename
关键字,因为iterator
取决于模板参数,并且在this SO答案中恢复。
答案 1 :(得分:1)
template<typename T>
typename B_T<T>::iterator B_T<T>::begin();
答案 2 :(得分:1)
您有多种选择:
template <class T>
_Array_iterator<T, uint32> B_T<T>::begin() {/**/}
但为什么在这种情况下使用typedef
;-)
其他经典方式:
template <class T>
typename B_T<T>::iterator B_T<T>::begin() {/**/}
从C ++ 11开始:
template <class T>
auto B_T<T>::begin() -> iterator {/**/} // No need of `typename B_T<T>::` before `iterator`.