具有模板参数的类中的所有方法声明都需要使用该参数声明吗?编译器似乎想要类似下面的东西
// Queue.h
template <class ItemType>
class Queue
{
Queue();
ItemType dequeue();
int count();
/* ... other methods ... */
};
// Queue.cpp
template <class ItemType>
Queue<ItemType>::Queue()
{ /*...*/ }
template <class ItemType>
int Queue<ItemType>::count()
{/*...*/}
template <class ItemType>
ItemType Queue<ItemType>::dequeue()
{/* ... */}
来自 Java/C#,这似乎有点多余——我觉得我应该能够像这样定义方法:
int Queue::count()
签名没有引用 ItemType,所以我们可以省略它。
Queue::ItemType Queue::dequeue()
签名引用了 ItemType,但编译器知道我们在谈论模板参数,因为我们用Queue::