我寫了一個學校項目的簡短模板方法,並得到我不明白的奇怪的語法錯誤。他們與我聲明的模板有關(在註釋包含模板的頭文件時,main()中的所有錯誤消失),但我無法弄清楚發生了什麼。我包含和「intersectHeader.h」並使用std命名空間。 在我的main()函數中,我所做的全部是聲明一個向量:模板方法中的語法錯誤,我不明白
vector v1; - 錯誤:C2065 '串' 未聲明的標識符, C2065 'V1' 未聲明的標識符,C2065 '向量' 未聲明的標識符
這是模板:
template<typename T>
vector<T> intersect(const vector<T> & v1, const vector<T> & v2)
{
vector<T> resultVector;
bool duplicate = false;
for (int i = 0; i < v1.size(); i++)
{
duplicate = false;
for (int j = 0; j < v2.size(); j++)
{
if (v1[i] == v2[j])
{
for (int a = 0; a < resultVector.size(); a++)
{
if (v1[i] == resultVector[a])
{
duplicate = true;
break;
}
}
if (!duplicate)
{
resultVector.push_back(v1[i]);
}
}
}
}
return resultVector;
}
上面給了我這些錯誤:
C2988無法識別的模板聲明/定義,C2143語法 錯誤缺少';'在'<'之前,C2059語法錯誤'<'。所有這一切都發生在第二行
「矢量相交(常量向量& V1, const的載體& V2)」
我不知道爲什麼在<>未示出的代碼,但所述聲明是:模板 矢量相交(常量矢量&V1,常量矢量&V2)和可變矢量 resultVector; –
Rick
請將完整的錯誤輸出複製粘貼到問題的正文中,使用代碼格式,以便顯示所有字符。還請指出(例如評論)代碼中錯誤的位置。如果可能的話,請嘗試創建一個[最小化,完整和可驗證示例](http://stackoverflow.com/help/mcve),您可以向我們顯示。 –
至少顯示所有包含和「使用命名空間」的東西。或者更好的是,刪除所有的使用指令,並用相應的限定符爲相關名稱加前綴。 – Mat