0
編輯:這不是沒有在頭中定義模板的問題。此錯誤是由於未定義複製構造函數而造成的。奇怪的未定義參考錯誤
我試着用谷歌搜索這個,但我找不到任何東西,除了人們調用沒有合適的參數和沿着這些線條的東西的事情的問題。所以,這裏有一個來自main的非常小的塊。我創建了一個模板化的容器類,並將其初始化爲一個包含字符串的測試。 sorted.h包含在兩個.cpp文件中。
錯誤的位置:http://imgur.com/OvdCHFO
// Test assignment operator
// Can test copy constructor by changing following two lines to
// sorted<string> test(songs);
sorted<string> test;
test = songs; // Error occurs when commenting this line back in.
這裏是我的重載的賦值運算符。我認爲這是什麼導致這個問題,因爲評論將使用它的行是什麼導致鏈接器錯誤。任何人都有一個想法,我在這裏做錯了什麼?
//Overloaded assignment operator. (sorted.cpp)
template <class T>
sorted<T> sorted<T>::operator=(const sorted<T>& srtd){
if (this != &srtd){
delete [] m_data;
delete [] m_randfinal;
m_data = new T[srtd.m_capacity];
m_randfinal = new T[srtd.m_size];
m_size = srtd.m_size;
m_capacity = srtd.m_capacity;
for (int i = 0; i < m_size; i++){
m_data[i] = srtd.m_data[i];
m_randfinal[i] = srtd.m_randfinal[i];
}
}
return *this;
}
sorted.h中的聲明。
// Overloaded assignment operator
sorted<T> operator=(const sorted<T>& srtd);
模板類的實現必須位於標題中,以便編譯器正確地實例化它們。 –
是的,我們被教會在頭部的底部包含cpp文件以避免這種情況。教授說這在技術上並不是一個好的做法,但它暫時解決了這個問題。不過,我的計劃中的其他一切都在努力。 – swingonaspiral
我試着將它移動到頭文件,但沒有骰子。 – swingonaspiral