小炒猪肝盖饭图片:vc++问题,编译通过连接时出错

来源:百度文库 编辑:高考问答 时间:2024/04/29 11:52:47
请教高手,一般编译通过连接时出错都是什么原因造成的
想问问根据你们的经验这种错误是怎么造成的,需要的话,下边是错误提示和源代码
我的出错提示:

Compiling...
tempateEX.cpp
Linking...
tempateEX.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CArray<int>::~CArray<int>(void)" (??1?$CArray@H@@UAE@XZ)
tempateEX.obj : error LNK2001: unresolved external symbol "public: void __thiscall CArray<int>::Print(void)const " (?Print@?$CArray@H@@QBEXXZ)
tempateEX.obj : error LNK2001: unresolved external symbol "public: __thiscall CArray<int>::CArray<int>(int * const)" (??0?$CArray@H@@QAE@QAH@Z)
Debug/tempateEX.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.
Creating browse info file...

tempateEX.exe - 4 error(s), 0 warning(s)

***************************************************************
下边是源代码
array.cpp

#include "stdafx.h"
#include "Array.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
template <class T>
CArray<T>::CArray()
{
m_pArr = NULL;
m_iNum = 0;

}

template <class T>
CArray<T>::~CArray()
{
if(m_pArr)
{
delete [] m_pArr;
}

}

template <class T>
CArray<T>::CArray(T arr[])
{

int i=0;
m_iNum = sizeof(arr)/sizeof(T);
m_pArr = new T[m_iNum];
for(i=0;i<m_iNum;i++)
{
m_pArr[i] = arr[i];
}

}

template <class T>
void CArray<T>::Print() const
{
int i=0;
if(m_pArr)
{
for(i=0;i<m_iNum;i++)
{
cout<<m_pArr[i]<<" ";
if((i+1)%9==0)
{
cout<<endl;
}
}
cout<<endl;
}
else
{
cout<<"ERROR! ARRAY IS EMPTY!"
<<endl;
}
}

template <class T>
void CArray<T>::Sort()
{
int i=0,j=0,lastIndex,tmp;
if(m_pArr)
{
i = m_iNum - 1;
while(i>0)
{
lastIndex = 0;
for(j=0;j<i;j++)
{
if( m_pArr[j] < m_pArr[j++] )
{
tmp = m_pArr[j];
m_pArr[j] = m_pArr[j+1];
m_pArr[j+1] = tmp;
lastIndex = j;
}
i = lastIndex;

}
}
}
else
{
cout<<"ERROR! ARRAY IS EMPTY!"
<<endl;
}
}

template<class T>
int CArray<T>::Size() const
{
return m_iNum;
}
***********************************************
templateEX.cpp

#include "stdafx.h"
#include "Array.h"

int main(int argc, char* argv[])
{
int x[5] = {5,6,2,9,3};
CArray<int> t(x);
t.Print();
printf("Hello World!\n");
return 0;
}
*******************************************************
array.h

#if !defined(AFX_ARRAY_H__AC5889DE_731C_40C2_8C68_15D83AE99ABE__INCLUDED_)
#define AFX_ARRAY_H__AC5889DE_731C_40C2_8C68_15D83AE99ABE__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

template <class T>
class CArray
{
public:
CArray();
CArray(T arr[]);
virtual ~CArray();
void Print() const;
void Sort();
int Size() const;
private:
T * m_pArr;
int m_iNum;

};

#endif // !defined(AFX_ARRAY_H__AC5889DE_731C_40C2_8C68_15D83AE99ABE__INCLUDED_)