Боюся, що всього цього мені не досить, щоб вказати на помилку. Зазвичай просять показати мінімальний шматок коду, що демонструє проблему. Код, який не можна скомпілювати, вочевидь, нічого не демонструє.
Стосовно якості коду:
1. Користуйтеся конструкторами, створення і ініціалізація мають відбуватися одночасно (вкрай бажано).
Не
ShingleText* originalShingles = new ShingleText;
...
originalShingles -> createShingles(originalText -> getInputText(),
originalText -> getWordCount());
а
ShingleText* originalShingles = new ShingleText(originalText -> getInputText(),
originalText -> getWordCount());
2. Ви передаєте в функції кілька параметрів об'єкту, хоча краще передати сам об'єкт (чи посилання на нього) зі всіма параметрами.
Не
originalShingles -> createShingles(originalText -> getInputText(),
originalText -> getWordCount());
а
originalShingles -> createShingles( originalText );
Не
Check -> setArrayResult(originalShingles -> getShingle(),
suspectShingles -> getShingle(),
originalShingles -> getShingleSize(),
suspectShingles -> getShingleSize());
а
Check -> setArrayResult( originalShingles, suspectShingles );
3. Не користуйтеся "магічними числами":
Не
shingleArray = new string[_wordCount - 2];
а
const int shingleSize = 3;
...
shingleArray = new string[_wordCount - shingleSize + 1];
4. В createShingles ви робите вкрай неефективно. Алгоритм має перебирати всі слова в рядку і знаходити їхні позиції за один прохід, наприклад, у відповідний масив (пар позиція - довжина, скажімо), а потім можете збирати їх в свої шингли. Ще краще замість масиву використовувати чергу, їх для того і придумали. Ви ж замість цього кілька разів шукаєте один і той самий пробіл різними функціями.