模板c++中未解决的外部错误
unresolved external error in templates c++
我在C++代码中遇到以下未解决的外部错误:
错误1错误LNK2019:函数__mainCRTStartup中引用的未解析外部符号_main
错误2错误LNK1120:1未解析的外部
我有一个抽象的父类和一个实现所有函数的派生类。然而,由于一些奇怪的原因,我出现了这个错误。如果我在没有模板的情况下编辑这段代码,它运行得很好。这是代码:
#include <iostream>
#include <conio.h>
using namespace std;
template <class E>
class List{
public:
List(){};
virtual ~List(){};
virtual void insert(const E& it) = 0;
};
template<class E>
class Alist : public List<E>{
private:
int maxSize;
int listSize;
int curr;
int biggest;
E* listArray;
public:
Alist(){
maxSize = 50;
listSize = 0;
biggest = 0;
curr = 0;
listArray = new E[maxSize];
}
~Alist(){
delete[] listArray;
}
void insert(const E& it){
if (curr <0 || curr >= maxSize){
cout << "The value is out of bounds.";
return;
}
for (int i = listSize; i >= curr; i--){
listArray[i] = listArray[i + 1];
}
if (curr > biggest)
biggest = curr;
listArray[curr] = it;
listSize++;
}
};
template <class E>
int main(){
Alist<int> A();
_getch();
return 0;
}
-
不要将
main
声明为函数模板:template <class E> int main(){
应该是:
int main(){
-
以下代码:
Alist<int> A();
是一个不带参数并返回
Alist<int>
的函数的声明,它应该是:Alist<int> A{}; //c++11
或:
Alist<int> A;
-
不要使用
<conio.h>
标头,它不是标准标头。 -
不要在
delete
语句中的[]
括号之间插入任何内容:delete[curr] listArray;
应该是:
delete[] listArray;
工作演示
主函数不应该是模板。编译器正在寻找一个非模板主函数作为入口点。
只需在main
声明之前删除template <class E>
。这在这里没有意义。
如果你真的想要一个模板主函数,你应该从一个非模板函数调用它:
namespace my {
template <class E>
int main(){
Alist<E> A;
_getch();
return 0;
}
}
int main()
{
return my::main<int>();
}
但我不认为这样做有什么意义。
相关文章:
- Visual Studio 2017 中的 QtMetaObject 未解决的外部错误
- 无法确定未解决的外部错误来自何处
- DLIB On visual studio 2015抛出一个未解决的外部错误
- 排除外部错误R6025-纯虚拟函数调用
- 如何在我的指针和阵列功能中修复未解决的外部错误-LNK2019和LNK1120
- 将外部错误代码映射到std :: error_condition
- 虚拟函数未解决的外部错误
- 非常简单的 x64 组装/C++应用程序中未解决的外部错误
- 链接到SFML的未解决的外部错误(SFML 2.2,Visual Studio Community 2013)
- 为什么我的代码会出现LNK2019未解决的外部错误
- 尝试重载=运算符时出现1个未解析的外部错误
- c++中链表代码中未解决的外部错误
- 操作员过载未解决的外部错误LNK1120、LNK2019
- 未解决的外部错误
- 模板上的算术运算符过载,导致无法解析的外部错误
- 致命错误LNK1120:1 个未解析的外部 & 错误 LNK2019:函数___tmainCRTStartup中引用_main未解析的外部符号
- 模板c++中未解决的外部错误
- C++程序使用 C 库标头将"this"识别为关键字。外部"C"错误?
- DLL LNK2019错误(未解析的外部错误__imp)
- 如何将DLL链接到我的主项目?(正在获取未解析的外部错误)