gpt4 book ai didi

c++ - 实例化模板类时出现链接器错误

转载 作者:行者123 更新时间:2023-11-28 07:21:50 26 4
gpt4 key购买 nike

main 中实例化 class 时出现以下两个错误:

error LNK2019: unresolved external symbol "public: __thiscall templateClass<int>::templateClass<int>(void)" (??0?$templateClass@H@@QAE@XZ) referenced in function _wmain

error LNK2019: unresolved external symbol "public: __thiscall templateClass<int>::~templateClass<int>(void)" (??1?$templateClass@H@@QAE@XZ) referenced in function _wmain

代码

templateClass.h

#pragma once

#define MAX 10

template<class T>
class templateClass
{

private:
T arr[MAX];
int size;
public:
templateClass(void);
void initArrayWithZero();
void pushElementIntoArray(T element );
void printArray();
~templateClass(void);
};

模板类.c

#include "templateClass.h"

template <class T>
templateClass<T>::templateClass(void)
{
size = 0;
}

template <class T>
templateClass<T>::~templateClass(void)
{
}

template <class T>
void templateClass<T>::pushElementIntoArray(T element )
{
if(size<MAX)
{
T[size++] = element;
}
else
{
//Give error code
}
}

template <class T>
void templateClass<T>::initArrayWithZero()
{
for(i= 0; i<MAX; i++)
T[i] = 0;
}

template <class T>
void templateClass<T>::printArray()
{
for( int i =0; i<MAX; i++)
cout<<"\n"T[i];
}

main.cpp

#include "stdafx.h"
#include "templateClass.h"

int _tmain(int argc, _TCHAR* argv[])
{
templateClass<int> intarray;
return 0;
}

我该如何解决这个问题?

最佳答案

模板类如templateClass<T>必须(通常)在 header ( .h) 文件中实现。

因此,您需要移动 templateclass.c 的内容至 templateClass.h并删除 templateclass.c .

参见 Why can templates only be implemented in the header file?获取更多信息。

关于c++ - 实例化模板类时出现链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19341625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com