我正在使用模板創建我自己的容器的任務。我需要使用的容器稱爲Smaph,它包含兩對數字並與它們一起執行各種功能。我只能爲這個任務創建一個頭文件。我創建了一個單鏈接的類slink,它需要一個模板參數。C++成員函數的使用無效,你忘記了()?
目前,我試圖獲得一個模板的感覺和學習如何使用它們,所以我有一個非常簡單的例子,我希望你能幫助我。我在我的單鏈表類中有一個push_back函數來添加到我的模板中。出於某種原因,我不能將事情添加到我的slink中,因爲我得到一個編譯時錯誤,說成員函數的無效使用(push_back),你忘記了()?有人可以向我解釋爲什麼我得到這個錯誤? 謝謝!
template <typename T>
class slink {
private:
struct node {
T datum;
struct node *next;
};
node *head, *tail;
public:
slink() : head(0), tail(0) {
}
~slink() {
clear();
}
void push_back(const T &datum) {
node *p = new node;
p->datum = datum;
p->next = 0;
if (!tail)
head = p;
else
tail->next = p;
tail = p;
}
template <typename Tfirst, typename Tsecond>
class Smaph {
public:
Smaph();
~Smaph();
Smaph(const Tfirst a, const Tsecond b) {
std::pair<Tfirst, Tsecond> pair1(a, b);
s.push_back(pair1);
}
private:
slink<std::pair<Tfirst, Tsecond> > s();
};
最後,我的主要測試我的程序。我現在想要做的就是通過我的Smaph將這兩個數字添加到我單獨鏈接的列表中。
int main() {
Smaph<int, double> s(3, 6.3);
}
這將有助於發佈完整的錯誤消息,有問題的行。 – zneak 2013-05-01 21:10:01
[Vexing parse](http://stackoverflow.com/q/1424510/1084416)等等。 – 2013-05-01 21:21:56