我正在使用Eclipse和MinGW。對於我在h文件中編寫的所有文件,我有undefined reference to
錯誤,我在cpp文件中包含主要位置。我創建一個空的項目,並再次同樣的事情(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一切,如果我有不是h-file,而是cpp - 所有作品。請幫助!
我有以下錯誤
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()'
我的不好,那是因爲模板!當你使用模板時,所有的代碼,包括函數的實現,都必須在頭文件中,或者你必須爲每一種你將要使用模板函數的類型編寫原型。我忘了模板的使用與通常的函數不一樣:( – Alecs