C++错误LNK 1120关于TEMPLATES
C++ Error LNK 1120 about TEMPLATES
可能重复:
为什么我得到“未解析的外部符号”使用模板时出错
使用模板的链接错误
我在两个文件"MyHeap.h"answers"MyHeapp.cpp"中有一个模板类"MyHeap"。可以在vs10中编译。但当我尝试在main中使用这个类时,发生了这个错误。我环顾四周,仍然无法自己解决这个问题。请帮帮我…
错误信息>>
MyHeap<int> minHeap(MyHeap<int>::MaxHeap);
错误1错误LNK2001:未解析的外部符号"public:__thiscall MyHeap::MyHeap(enum MyHeap:::HeapType)"(??0$MyHeap@H@@QAE@W4HeapType@0@@Z)D:\文档\Visual Studio 2010\Projects\C++\ConsolePP_Trivia\ConsoleCPP_rivia\program.obj错误2错误LNK1120:1未解析的外部数D:\文档\Visual Studio 2010\Projects\C++\ConsolePP_Trivia\Debug\ConsoleCPP _Trivia.exe
MyHeap.h:
-----------------------------------------------------------
#pragma once
#include <vector>
using namespace std;
template <class T>
class MyHeap
{
public:
static enum HeapType {CustomizedHeap, MaxHeap, MinHeap};
private:
typedef bool (*COMP_FUNC)(const T&, const T&);
COMP_FUNC _comp;
HeapType _heapType;
vector<T> _data;
public:
MyHeap(HeapType heap_type = MaxHeap);
MyHeap(COMP_FUNC compare_function);
void add(const T& item);
T remove();
bool isEmpty() const;
void clear();
private:
bool __compare(const T&, const T&);
};
必须在头文件中定义模板。不能在源文件和头文件中分离模板类/函数的实现。
原因是,模板是C++的编译时"特性",它们的实现必须在编译时可见。
相关文章:
- 一个关于在C++中重载布尔运算符的问题
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 关于std::move的使用,是否有编译警告
- 关于简单C++函数(is_palindrome)的逻辑的问题
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 关于:C++中异常对象的范围:为什么我没有得到副本?
- 关于C++中具有多重继承"this"指针的说明
- 关于 c++ 函数中指针赋值的简单问题
- 关于 std::min, std::max 中的比较运算符的混淆
- 这是关于成员访问规则的正确摘要吗
- C++ 关于指针取消引用的技术问题
- std::is_trivially_copyable_v 关于虚拟功能
- 关于指向指针数组的指针
- 关于复制构造函数的一个棘手问题
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- 关于类的 Python 文档 - 对C++的引用不正确
- 关于 C++ 中的函数类型定义
- 关于条件块的问题与&&运算符有关
- 关于 Variadic Templates with Visual Studio 2010 的困惑
- C++错误LNK 1120关于TEMPLATES