回答編集履歴
2
表現の微修正
test
CHANGED
@@ -3,9 +3,10 @@
|
|
3
3
|
|
4
4
|
---
|
5
5
|
|
6
|
-
コンパイルはファイル単位で行います
|
6
|
+
コンパイルはファイル単位で行います。
|
7
|
+
また、テンプレートはあくまで「雛形」で、使われているテンプレート引数ごとに別物とみなします。
|
7
|
-
`TestTemplate.cpp`には`TestTemplate<int>`を使うことがわかりませんので
|
8
|
+
今回は、`TestTemplate.cpp`には`TestTemplate<int>`を使うことがわかりませんので`TestTemplate<int>`は生成されません。
|
8
|
-
しかし`main.cpp`で使おうとしているのでリンクの段階でエラーになります。
|
9
|
+
しかし`main.cpp`では`TestTemplate<int>`を使おうとしているのでリンクの段階でエラーになります。
|
9
10
|
|
10
11
|
ちなみに`TestTemplate.cpp`で`int`を使うことを宣言する。ことでも回避可能ですが、
|
11
12
|
そもそも型を特定せずに書く目的でテンプレートを使っているので、どの型で使われるかを予め宣言するのは目的に合いません。
|
1
理由の追記
test
CHANGED
@@ -1,2 +1,11 @@
|
|
1
1
|
`TestTemplate.cpp`の内容を`TestTemplate.h`に書いてください。
|
2
|
+
基本的にテンプレートの実装はヘッダに書きます。
|
2
3
|
|
4
|
+
---
|
5
|
+
|
6
|
+
コンパイルはファイル単位で行います、
|
7
|
+
`TestTemplate.cpp`には`TestTemplate<int>`を使うことがわかりませんので、`TestTemplate<int>`は生成されません。
|
8
|
+
しかし`main.cpp`で使おうとしているのでリンクの段階でエラーになります。
|
9
|
+
|
10
|
+
ちなみに`TestTemplate.cpp`で`int`を使うことを宣言する。ことでも回避可能ですが、
|
11
|
+
そもそも型を特定せずに書く目的でテンプレートを使っているので、どの型で使われるかを予め宣言するのは目的に合いません。
|