重複の可能性:
テンプレートをヘッダーファイルにのみ実装できるのはなぜですか?
テンプレートクラスの実装と宣言を同じヘッダーファイルに含める必要があるのはなぜですか?
データを保存するために「スタック」が必要なプロジェクトに取り組んでいます。しかし、ファイルタイプごとに異なるバージョンをコーディングしたくありません(そしてベクターを使用したくありません)。
だから私はテンプレートクラスを使おうとしています、そしてこれは私のコードです:
StructStack.h
#ifndef STRUCTSTACK_H_
#define STRUCTSTACK_H_
template <class AnyType> class StructStack {
StructStack();
~StructStack();
struct Element {
Element *pointer;
AnyType value;
};
Element *pointerToLastElement;
int stackSize;
int pop();
void push(int value);
int size();
};
#endif
StructStack.cpp
#include "stdafx.h"
#include "StructStack.h"
#include <iostream>
using namespace std;
template <class AnyType> void StructStack<AnyType>::StructStack() {
//code
}
template <class AnyType> void StructStack<AnyType>::~StructStack() {
//code
}
template <class AnyType> AnyType StructStack<AnyType>::pop() {
//code
}
template <class AnyType> void StructStack<AnyType>::push(AnyType value){
//code
}
template <class AnyType> AnyType StructStack<AnyType>::size() {
//code
}
これらの2つのファイルをコンパイルしようとすると、コンパイルエラーが大量に発生します。複数ファイルのプロジェクトでテンプレートクラスを作成するのはちょっと難しいとオンラインで読んだ。
では、これはどのように行うことができますか?