如何解决Eclipse未定义引用
| 我正在使用Eclipse和MinGW。我在h文件中写的所有内容都出现了“ 0”错误,我确实将其包含在main所在的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;
}
栈
#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中的所有内容
如果我不包括h文件,而是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()\'
解决方法
这是一个链接器错误。我不是Eclipse专家,但是您必须以某种方式告诉它将command4ѭ添加到链接命令中。
如果包括
Stack.cpp
而不是Stack.h
,则编译之前,预处理器会将cpp文件中的实现包含在main.cpp中,因此链接阶段没有未解析的对外部函数的引用。
, 我不好,那是因为模板!使用模板时,所有代码(包括函数的实现)都必须位于头文件中,或者必须为将要与模板函数一起使用的每种类型编写原型。我忘记了使用模板与通常的功能不一样:(
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。