[問題] 參數化型別
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC 6.0
問題(Question):
自己實作一個Array,錯誤碼如下:
error LNK2001: unresolved external symbol "public: __thiscall
Array<int>::Array<int>(int)" (??0?$Array@H@@QAE@H@Z)
程式碼(Code):(請善用置底文網頁, 記得排版)
/* main.cpp */
#include "stdafx.h"
#include "Array.h"
#include <iostream>
using std::cout;
int main(int argc, char* argv[])
{
Array<int> tmp;
return 0;
}
-------------------------------------------------
/* Array.h */
const int DefaultSize = 10;
template<class T>
class Array
{
public:
//Constructor
Array(int itsSize = DefaultSize);
Array(const Array &rhs);
virtual ~Array(){ delete [] pType; }
//Operator
Array& operator=(const Array &rhs);
T& operator[](int offset) const { return pType[offset]; }
//Interface
int GetSize() const;
private:
T* pType;
int itsSize;
};
-------------------------------------------------
/* Array.cpp */
#include "stdafx.h"
#include "Array.h"
template<class T>
Array<T>::Array(int Size = DefaultSize):itsSize(Size)
{
pType = new T[Size];
for (int i=0 ; i<Size ; i++)
pType[i]=0;
}
template<class T>
Array<T>::Array( const Array &rhs )
{
itsSize = rhs.GetSize();
pType = new T[Size];
for (int i=0 ; i<Size ; i++)
pType[i]=rhs[i];
}
template<class T>
Array<T>& Array<T>::operator=( const Array &rhs )
{
if (this == &rhs)
return *this;
delete [] pType;
itsSize = rhs.GetSize();
pType = new T[Size];
for (int i=0 ; i<Size ; i++)
pType[i]=rhs[i];
return *this;
}
template<class T>
int Array<T>::GetSize() const
{
return itsSize;
}
補充說明(Supplement):
基本上是照著書上範例打的,
唯一的差異是書上把所有東西都寫在同一份.h,
但怎麼試都compile不過...
想請問錯在哪?
謝謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.34.227.117
推
10/03 11:49, , 1F
10/03 11:49, 1F
→
10/03 12:00, , 2F
10/03 12:00, 2F
→
10/03 12:00, , 3F
10/03 12:00, 3F
→
10/03 12:25, , 4F
10/03 12:25, 4F
→
10/03 13:45, , 5F
10/03 13:45, 5F
→
10/03 15:00, , 6F
10/03 15:00, 6F
推
10/03 15:08, , 7F
10/03 15:08, 7F
推
10/03 16:19, , 8F
10/03 16:19, 8F
推
10/03 19:02, , 9F
10/03 19:02, 9F
→
10/03 19:04, , 10F
10/03 19:04, 10F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章