In onderstaande code heb ik een segmentatiefout. De fout ontstaat in de functie AddWordpair. Het lijkt erop dat de gegevens verloren gaan bij het toevoegen van een object van het wordpair class aan de array. Dit is een array gedeclareerd met een pointer. Is het nodig om een copyconstructor te gebruiken. Ik weet niet goed hoe de copy constructor werkt.
#include <iostream>
class wordpair{
public:
wordpair(){}
wordpair(std::string word1, std::string word2):ItsWord1(word1),ItsWord2(word2){}
wordpair(const wordpair &);
std::string GetItsWord1() const {return ItsWord1;}
std::string GetItsWord2() const {return ItsWord2;}
void SetBothWords(std::string word1,std::string word2){ItsWord1=word1;ItsWord2=word2;}
private:
std::string ItsWord1,ItsWord2;
//niets
};
wordpair::wordpair(const wordpair & rhs){}
class dictionary{
public:
dictionary();
dictionary(const dictionary &);
~dictionary();
void AddWordpair(wordpair wordpair);
void AddWordpair(std::string word1, std::string word2);
void SetItsLang(std::string lang1,std::string lang2){ItsLang1=lang1;ItsLang2=lang2;}
std::string GetItsLang1() const {return ItsLang1;}
std::string GetItsLang2() const {return ItsLang2;}
wordpair GetItsWordPairs(int n){return pItsWordPairs[n];}
private:
int Itsn;
wordpair* pItsWordPairs = new wordpair[100];
std::string ItsLang1,ItsLang2;
};
dictionary::dictionary(){}
dictionary::~dictionary(){
delete [] pItsWordPairs;
}
dictionary::dictionary(const dictionary &){}
void dictionary::AddWordpair(wordpair wordpair){
pItsWordPairs[Itsn++] = wordpair;
}
void dictionary::AddWordpair(std::string word1, std::string word2){
wordpair wordpair(word1,word2);
pItsWordPairs[Itsn++] = wordpair;
}