これはなぜこれが機能しないのか理解しようとしているうちに、これを4.5時間行ったことです。まだ運がありません。私はセグメンテーションフォールトを取得し続けるか、リストが表示されることはありません。リンクされたリストからのセグメンテーションフォールト
SimpleVector.h
// SimpleVector class template
#ifndef SIMPLEVECTOR_H
#define SIMPLEVECTOR_H
#include <iostream>
#include <iomanip>
using namespace std;
class SimpleVector
{
private:
struct Link{
int data;
Link *next;
};
Link *head;
public:
// Default constructor
SimpleVector()
{head = NULL;}
// Destructor declaration
~SimpleVector();
void linkList(int);
//void insertLink(T);
void displayList();
};
//Destructor for SimpleVector
SimpleVector::~SimpleVector(){
Link *linkPtr;
Link *nextPtr;
nextPtr = head;
while(linkPtr != NULL){
nextPtr = linkPtr->next;
}
delete linkPtr;
linkPtr = nextPtr;
}
//Creation of List
void SimpleVector::linkList(int size){
Link *newLink = new Link; //create first link
head = newLink; //
head->data = size--; //Fill the front with data
head->next = NULL; //Point the front to no where
do{
Link *end = new Link; //Create a new link
end->data = size--; //Fill with data
end->next = NULL; //Point to no where
head->next = end; //Previous link will point to the end
// head = end; //Move to the end
}while(size > 0); //Repeat until filled
}
//Creation of Link and insertion
/*
template <class T>
void SimpleVector<T>::insertLink(T){
}
*/
//Function to print the entire list
void SimpleVector::displayList(){
Link *linkPtr;
linkPtr = head;
while(linkPtr != NULL){
cout<<setprecision(3)<<linkPtr->data;
linkPtr = linkPtr->next;
}
}
#endif
main.cppに
// This program demonstrates the SimpleVector template.
#include <iostream>
#include "SimpleVector.h"
using namespace std;
int main(){
int SIZE = 10; // Number of elements
// Create a SimpleVector of ints.
SimpleVector intTable;
intTable.linkList(SIZE);
intTable.displayList();
return 0;
}
*ビルドが成功したにもかかわらず* - ビルドが成功した場合は、プログラムに構文エラーがないことを意味します。ロジックが正しいのか、プログラムが正しい結果を生み出すのかとは何の関係もありません。 – PaulMcKenzie
セグメンテーションフォルトを生成するのはどのラインですか? –
デストラクタは、初期化されていないローカル変数を使用するため、間違っています。あなたのコンパイラはこれについてあなたに警告しませんでしたか? – PaulMcKenzie