以下はある参考書で使用されているプログラムです。
テンプレートクラスの説明をしているのですが、一部説明がなく、ネットで検索しても出てこなかったのでこちらで質問させて頂きました。
以下の(あ)のコードが急に出てきて何を表しているのか具体的に分かりません。
テンプレートクラスのメンバ変数なら、「data_t next;」とすればいいはずなのに、listの型を使用しています。
そして(い)でもlist型の戻り値を返す関数を作成しています。
(う)(え)ではlist型でオブジェクトとポインタを宣言しています。
ただ、今まで出て来た参考書の説明では(う)(え)の「<char>」の部分は、data_tの型にしか掛かっていませんでした。
なので<char>は非公開メンバのdataか、公開メンバのgetdata()にしか掛かってないと思っていました。
ですがこのプログラムではnextや*getnext()にもかかっています。
ちょっと話が分かりにくいかもしれませんが、要は(あ)が何を表しているのか知りたいのです。
回答宜しくお願いします。
// 単純な汎用リンクリスト
#include <iostream>
using namespace std;
template <class data_t> class list {
data_t data;
list *next; ・・・・・・(あ)
public:
list(data_t d);
void add(list *node) {node->next = this; next = 0; }
list *getnext() { return next; } ・・・・・(い)
data_t getdata() { return data; }
};
template <class data_t> list<data_t>::list(data_t d)
{
data = d;
next = 0;
}
int main()
{
list<char> start('a'); ・・・・・・(う)
list<char> *p, *last; ・・・・・・(え)
int i;
// リストを作成する
last = &start;
for(i=1; i<26; i++) {
p = new list<char> ('a' + i);
p->add(last);
last = p;
}
// リストを追跡する
p = &start;
while(p) {
cout << p->getdata();
p = p->getnext(); ・・・・・・(お)
}
cout << "\n";
return 0;
}
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/29 06:24