私はテンプレート化されたクラスの使い方を学ぼうとしています。私は単純なテンプレートクラスnumbers
を作成しました。このクラスには2つの数値があり、どのデータ型でもかまいません。それから、オブジェクトの2つのうち大きい方の数を返すメソッドを作りました。何らかの理由で私はリンカのエラーを取得し続けます...ここにエラーとコードがあります。何が間違っているのか分からず、Visual Studioは自分のコードに何かを強調していませんでした。C++テンプレートエラー?
それが読み小さすぎるなら、彼らは「未解決の外部シンボル」と言います。読書のための
templated.h
template <class T>
class numbers {
public:
numbers(T x, T y);
T bigger();
private:
T a, b;
};
templated.cpp
#include "templated.h"
#include <iostream>
using namespace std;
template <class T>
numbers<T>::numbers(T x, T y) {
a = x;
b = y;
}
template <class T>
T numbers<T>::bigger() {
return a > b ? a : b;
}
main.cppに
#include <iostream>
#include "templated.h"
using namespace std;
int main() {
numbers <int>pair(1, 2);
cout << pair.bigger() << endl;
return 0;
}
ありがとう!
大丈夫なので、テンプレートクラスの関数の実装を、別のファイルに置くことはできません。ただし、関数のデータ型を指定する必要はありません。そうですか? –
使用するすべてのタイプのクラスをインスタンス化すると、cppファイルにテンプレートクラスが実装されます。関数と同じです。 –
ああ、テンプレート化されたクラスには.hファイルを使用しないでください。 –