Language* intersection(const Language& language1, const Language& language2){ if (!equalAlphabets(language1, language2)){ throw std::invalid_argument("Languages Alphabets must match"); } Language* intersectionLanguage = new Language(language1.getAlphabet()); for(unsigned int i = 0; i < language1.size(); i++){ Word* word1 = language1.getWord(i); for(unsigned int j = 0; j < language2.size(); j++){ Word* word2 = language2.getWord(j); if(*word1 == *word2){ Word* intersectingWord = new Word(word1); intersectionLanguage->addWord(intersectingWord); } } } return intersectionLanguage; }