私はフルタイムのC++プログラミングが初めてで、さまざまなことに関わるニュアンスをよりよく理解しようとしています。C++テンプレートを使ったメソッド定義
私は小さなプロジェクトの中でテンプレートを使用しています。ほとんどの場合、私が学んだようにコードを作り上げています。 Visual Studioは、私は(私の.hファイルから私の.cppファイルで)これにコードと同等の生成を助け:
template<class T>
PriorityQueue<T>::ClimbDownHeap(const int currentNodeIndex)
{
}
template<class T>
PriorityQueue<T>::GetRightNodeIndex(const int currentNodeIndex)
{
}
これは同じように有効であろうとけれども、私は印象の下で午前:
template <class T>
class PriorityQueue
{
public:
ClimbDownHeap(const int currentNodeIndex)
{
}
private:
GetRightNodeIndex(const int currentNodeIndex)
{
}
};
私の理解は間違っているかもしれませんが、少なくともこれは両方ともコンパイルされるように見えます。これらのスタイルの2つの間に重要な違いはありますか?それはもっときれいで私にはっきりしているので、私は2番目を好むだろう。これらのニュアンスは何ですか?
注:これは不規則な列車に入力するので、問題の書式設定やコードが明確でない場合はお詫びします(私が試したことのメモリから入力したものですが、正確ではありません)。
テンプレート定義をソースファイルに入れることには問題があります。詳細については、[this](http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file)の質問を読むことができます。 –
[なぜテンプレートはヘッダーファイルにのみ実装できますか?](http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file) –
I ** CppCon 2016:Arthur O'Dwyer「テンプレートノーマルプログラミング」** [Part1](https://www.youtube.com/watch?v=vwrXHznaYLA)と[Part2](https:// www.youtube.com/watch?v=VIz6xBvwYd8) –