Я думаю, у вас правильная идея, но вы делаете не то, что нужно.Папки:
list<Folder> folders
Чем вы итерируете разные элементы "папка", а не "Папка":
for (list<folder> itr = folders.begin(); itr != folders.end();)
Я думаю, что это должно быть скорее:
for (list<Folder>::iterator itr = folders.begin(); itr != folders.end();)
Теперь, когда вы выполняете итерацию правильных объектов, сделайте сравнения, которые имеют смысл, а не строку с объектом:
if (fName == *itr)
, а скорее сравните строку со строкой, я предполагаю, что у вашего класса Folder есть некоторый метод для получения имени папки, например:
if (fName == (*itr).getFolderName())