我有一個編程任務,要求我們使用動態分配的二維char數組代替字符串和向量。我有兩個類:包含指向char數組的指針的Word,以及包含指向Word數組的指針的WordList。從調用數組中的對象的函數時發生分段錯誤
段故障來自這部分代碼:
for(int i=0; i<listLength; i++)
fout << "Word " << i << (wordList[i])->getWord() << endl;
其中Fout爲使用ofstream對象,單詞表是Word **對象,屏幕取詞()是一個字對象的成員函數。問題是我在WordList的另一個成員函數中使用了同樣的wordList [i] - > getWord()語法,並且得到正確的輸出。
請讓我知道,如果需要更多的代碼來正確的分析問題
更多代碼:
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include "Word.h"
using namespace std;
class WordList
{
public:
int listLength_;
Word** wordList_;
WordList()
{
char blank = ' ';
char* blankPtr = ␣
setListLength(1);
wordList_ = new Word* [listLength_];
for(int i=0; i<listLength_; i++)
{
wordList_[i] = new Word(blankPtr);
}
}
void addWord(Word* word, Word** wordList, int n)
{
Word** wl_temp = new Word* [n+1];
for(int i=0; i<n; i++)
{
wl_temp[i] = wordList[i];
}
wl_temp[n] = word;
delete[] wordList;
setWordList(wl_temp);
listLength_++;
cout << " " << (wordList_[n]->getWord()); //works here
}
void parse(const char* filename)
{
ifstream fin(filename);
char end;
char* tw;
while(fin >> end)
{
fin.unget();
fin.get(tw=new char[49], 49, ' ');
Word* w = new Word(tw);
addWord(w, getWordList(), getListLength());
delete w;
delete[] tw;
}
}
void output(const char* outfile)
{
ofstream fout(outfile);
for(int i=1; i<=listLength_; i++)
fout << "Word " << i << (wordList_[i])->getWord() << endl; //not here
fout.close();
}
};
int main(int argc, char* argv[])
{
WordList wordList;
wordList.parse(argv[1]);
wordList.output(argv[2]);
return 1;
}
你確定'wordList [i]'不爲null嗎?另外,請說明如何分配數組及其成員。 – 2013-02-15 10:00:37
你能提供更多的代碼嗎?理想情況下,[sscce](http://sscce.org/) – simonc 2013-02-15 10:00:57
@JoachimPileborg正面wordList [i]不爲null,因爲我可以訪問來自不同的函數 – 2013-02-15 10:03:37