テンプレートを使用して独自のコンテナを作成する課題に取り組んでいます。私が使用する必要があるコンテナーは Smaph と呼ばれ、2 組の数値を受け取り、さまざまな機能を実行します。この課題のヘッダー ファイルの作成のみ許可されています。テンプレート引数を 1 つ取る単一リンク クラス slink を作成しました。
現在、私はテンプレートの感触をつかみ、それらの使用方法を学ぼうとしているので、非常に簡単な例を用意して、あなたが助けてくれることを望んでいました. テンプレートに追加する単一リンク リスト クラスに push_back 関数があります。何らかの理由で、「メンバー関数の無効な使用 (push_back)、( ) を忘れましたか?」というコンパイル時エラーが発生するため、slink に何かを追加できません。このエラーが発生する理由を誰かに説明してもらえますか? ありがとうございました!
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();
};
そして最後に、プログラムをテストするためのメインです。私が今したいのは、これらの 2 つの数値を、Smaph を介して単一リンク リストに追加することだけです。
int main() {
Smaph<int, double> s(3, 6.3);
}