我正在使用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