各リストに最初のノード、最後のノード、およびnum_elementsがある二重リンクリストを作成しようとしています。しかし、何らかの理由で、私がUseList.cppファイルのコードをテストしようとすると、num_elementsをデフォルトとして0に設定することができません。実行するコンストラクタを取得できません
私が何を意味するかをお見せしましょう:List.hで
:
template <class L>
// Print out the data in each node separated by a space.
void List<L>::show() {
cout << num_elements << endl;
Node<L> *current_node = first;
while (current_node != NULL) {
cout << current_node->data << " ";
current_node = current_node->next;
}
cout << endl;
}
注意がいる:
template <class L>
class List
{
private:
Node<L> *first;
Node<L> *last;
int num_elements;
public:
// constructors and destructors
List();
[...]
}
[...]
template <class L>
List<L>::List() {
first = NULL;
last = NULL;
num_elements = 0;
}
[...]
これはlist.hでダウン下showメソッドでありますnum_elementsを出力するためのcout文です。
これはUseList.cppの関連部分です。showが呼び出されると
int main (int argc, char *argv[]) {
cout << "-----------------------------------------" << endl;
cout << "----------------LIST ONE-----------------" << endl;
cout << "-----------------------------------------" << endl;
List<int> *list1;
srand(time(NULL));
list1->show();
[...]
、それは「1」を出力してくれセグメンテーションフォールトを与えます。なぜnum_elementsは "0"ではなく "1"にデフォルト設定されていますか?
私はList<L>::List() {
でCOUTを行うと、何も印刷されない...(これはコンストラクタが実行されることはありませんことを意味?)の助けを
ありがとう!
のインスタンスを作成します。ありがとうございました!私はStackOverflowが10分後に答えを受け入れるでしょう。 –