Eclipse未定义引用
我正在使用Eclipse和MinGW。我在h文件中写入的所有内容都有Eclipse未定义引用,eclipse,mingw,Eclipse,Mingw,我正在使用Eclipse和MinGW。我在h文件中写入的所有内容都有未定义的引用错误,我确实将其包含在主文件所在的cpp文件中。我创建了一个空项目,同样的事情再次发生( main.cpp #include <iostream> #include "Stack.h" using namespace std; int main(){ Stack<int> stack(10); cout << "!!!Hello World!!!" <&l
未定义的引用错误,我确实将其包含在主文件所在的cpp文件中。我创建了一个空项目,同样的事情再次发生(
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”
使用名称空间std;
int main(){
堆叠(10);
cout这是一个链接器错误。我不是Eclipse专家,但您必须告诉它如何向链接命令添加Stack.o
。
如果包含Stack.cpp
而不是Stack.h
,则编译前预处理器会将cpp文件中的实现包含到main.cpp中,因此链接阶段没有未解析的外部函数引用。这是链接器错误。我不是Eclipse专家,但您必须告诉它如何添加Stack.o
到链接命令。
如果包含Stack.cpp
而不是Stack.h
,则编译前预处理器会将cpp文件中的实现包含到main.cpp中,因此链接阶段没有对外部函数的未解析引用。我的错,那是因为使用模板!使用模板时,所有代码,包括fu的实现nctions必须位于头文件中,否则您必须为要使用模板函数的每种类型编写原型。我忘记了使用模板与使用普通函数不同:(我的错,那是因为模板!当您使用模板时,所有代码,包括函数的实现,都必须在头文件中,或者您必须为要使用模板函数的每种类型编写原型。我忘记了使用模板与使用普通函数不同:(My bad,那是因为模板!当您使用模板时,所有代码,包括函数的实现,都必须在头文件中,或者您必须为要使用模板函数的每种类型编写原型。我忘记了使用模板与使用普通函数不同:(我不好,那是因为模板!当你使用模板时,所有代码,包括函数的实现,都必须在头文件中,或者你必须为你要使用模板函数的每种类型编写原型。我忘记了使用模板与使用普通函数不同:(
#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_ */
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()'