私はEclipseとMinGWを使用しています。私はundefined reference to
エラーがあります。これは、hファイルに書き込むすべてのエラーです。つまり、mainにあるcpp-fileにインクルードします。私は、空のプロジェクトを作成し、再び同じこと(Eclipse定義されていない参照
main.cppに
#include <iostream>
#include "Stack.h"
using namespace std;
int main(){
Stack<int> stack(10);
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
stack.h
#ifndef STACK_H_
#define STACK_H_
template <class T>
class Stack{
private:
struct StackEl;
StackEl *top;
public:
Stack();
Stack(T el);
~Stack();
void Push(const T& el);
T Pop();
};
#endif /* STACK_H_ */
とstack.cppは私が含まれている場合stack.h からすべてをinplements
私は以下のエラーが発生しました
D:/Workspacee/Stack2/Debug/../src/Stack2.cpp:16: undefined reference to `Stack<int>::Stack(int)'
D:/Workspacee/Stack2/Debug/../src/Stack2.cpp:18: undefined reference to `Stack<int>::~Stack()'
D:/Workspacee/Stack2/Debug/../src/Stack2.cpp:18: undefined reference to `Stack<int>::~Stack()'
テンプレートを使用すると、テンプレートを使用すると、関数の実現を含むすべてのコードがheader-fileになければなりません。テンプレート関数を使用するすべてのタイプのプロトタイプを書く必要があります。テンプレートを使って作業することは、通常の関数と同じではないことを忘れてしまいました。 – Alecs