テンプレートパラメータを持つクラスのすべてのメソッド宣言は、そのパラメータで宣言する必要がありますか?コンパイラは次のようなものを望んでいるようです
// 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::