【发布时间】:2010-07-30 12:12:00
【问题描述】:
我需要一个模板函数来调整任何类型的数组。
这是我的尝试:
class CCommon
{
template < typename T >
static void ResizeArray(T* paArray, int iOldSize, int iNewSize, T tInitValue);
}
..
template < typename T >
void CCommon::ResizeArray(T* paArray, int iOldSize, int iNewSize, T tInitValue)
{
T* paTmpArray = new T[iOldSize];
for(int i = 0; i < iOldSize; i++)
{
paTmpArray[i] = paArray[i];
}
delete [] paArray;
paArray=new T[iNewSize];
for(int i=0; i < iNewSize; i++)
{
paArray[i] = tInitValue;
}
for(int i = 0; i < iOldSize; i++)
{
paArray[i] = paTmpArray[i];
}
delete [] paTmpArray;
}
CCommon 文件甚至是可编译的,但如果我想使用它,我会得到错误:
Fehler 2 错误 LNK2019:Verweis auf nicht aufgelöstes externes 符号 (“未解决的外部引用”。)
""public: 静态无效 __cdecl CCommon::ResizeArray(int *,int,int,int)" (??$ResizeArray@H@CCommon@@SAXPAHHHH@Z)" 在 Funktion ""public: void __thiscall CWaebi_OBJ::ReInit(void)" (?ReInit@CWaebi_OBJ@@QAEXXZ)".CWaebi_OBJ.obj
Fehler 3 致命错误 LNK1120: 1 nicht aufgelöste 外部
我想这样称呼它:
#include CCommon
SomeFunction
{
..
CCommon::ResizeArray<BOOL>( mTextIndexMask, m_iNumberOfLastTextMaskArray, mTextCount, FALSE );
..
}
怎么了?
尊敬的大人
【问题讨论】:
-
大多数 SO 用户将无法阅读错误消息。
-
“未解决的外部引用”。
-
还有一个 .cpp 文件中的模板定义。
-
您可能希望通过引用传递指针--与问题无关,而是一个错误--。此外,您的功能成本高昂(您复制的内容超出了您的需要),并且无论如何都不是异常安全的。
-
@Donotalo: "Verweis auf nicht..." 是德语; “??$ResizeArray@H@CCommon@@SAXPAHHHH@Z”是湿气蒸发器的二进制语言。
标签: c++