2016-10-17 23 views
0

C++クラスのテンプレート化バージョンを作成する必要があるコンピュータサイエンスクラスに課題があります。私たちのインストラクターは、私たちにこの問題に関する指示を少しも与えてくれませんでした。Visual Studio 2015ソリューションでC++テンプレートを実装する正しい方法は何ですか?

私は本の著作からコードを作成したようですが、私が使用したアプローチが適切であるかどうかはわかりません。

基本的に、本で提供する例は、標準データ型(int、char、stringなど)を格納するために使用される単純なコンテナである「bag」クラスです。このクラスのテンプレート化バージョンは、header5.hというヘッダファイルで宣言され、実装はbag5.templateという.templateファイルで与えられます。ヘッダは、ヘッダーの最後のほうにあるこの行を使用して.templateファイルからコードを取得します。

#include "bag5.template"

最初は、Visual Studio 2015を使用しているC++ソリューションに.templateタイプのファイルを実装する方法がわかりませんでした。私は答えを探しましたが、残念ながら「Visual Studio」と「テンプレート」という用語を検索していますビジュアルスタジオプロジェクト用のテンプレートを作成する方法はほとんど無限でしたが、Visual Studioで汎用C++テンプレートを適切に実装することはほとんどありませんでした。

試行錯誤を経て、私は最終的に.templateファイルをC++ソースファイルではなく "text"タイプのファイルとしてソリューションに追加することで、動作するソースコードを得ました。私の質問は簡単です:Visual Studio 2015を使用して宣言されたテンプレートの定義を実装する正しい方法ですか?

また、Visual Studio 2015に.templateファイルをC++コードとして認識させ、それに応じてフォーマットする方法はありますか? .template実装ファイルをソリューション内の "text"タイプとして追加すると、IDEはファイル内のテキストを色付けしません。白いテキストには完全に黒くなります。

+0

ようこそstackoverflow.com [ヘルプページ](http://stackoverflow.com/help)、特に[ここではどのトピックを聞くことができますか?](http://stackoverflow.com/help/)のセクションを読んでください。 「どのような種類の質問をしないでください?"](http://stackoverflow.com/help/dont-ask)。また、[良い質問をする方法について読む](http://stackoverflow.com/help/how-to-ask)と、 –

+0

ソリューションエクスプローラで* .template *ファイルを右クリックして、* Open With ...を選択してください。*(* .template *そして、* "C++ソースコードエディタ(Defaut)" *をエディタのリストから選択すると、構文の強調表示が適切に適用され、IntelliSenseサポートが有効になります – IInspectable

+0

IInspectable、VS 2015でそのオプションが与えられないのですか? "XMLエディタ"、 "ソースコードエディタ"、 "HTMLエディタ"のオプションはありますが、C++では使用できません。私の.cppファイルで "open"を実行するとC++ソースコードエディタがオプションとして表示されます。 .templateファイル。 – Rob

答えて

1

これを行う通常の方法は、テンプレートのコードをヘッダーに直接入れることです。

実際にコードを宣言と区別しておきたい場合は、VC++がヘッダーとして認識する2つの異なる拡張子を選択し、それらの拡張子にヘッダーを含めることができます。たとえば、bag5.hbag5.hhを含む)があります。

両方の拡張機能がヘッダとしてVC++によって認識されている限り、人生はかなり良いです - それらを扱う方法を伝えるのに多くのことをする必要はなく、両方に自動的にカラーコードを適用します。

+0

助けてくれてありがとう。 – Rob

0

何も問題はありません。ファイルに任意の名前を付けることができます。

しかし、それはかなり変わっています。私は拡張子.templateが使われているのを見たことがなく、明らかにどちらもあなたのIDEを持っていません。

.ipp、またはちょうど.hを使用します。 IDEがこれらの拡張機能を好むかどうかを確認できます。

.templateを使用する必要がある場合は、これまで正しく行っています。 VSがC++のようなファイルを強調表示するように強制することができるかどうかはわかりません。

+0

私は返事を感謝し、これは私に良いビットを助けた。 – Rob

関連する問題