Вообще, тема очень большая.
Но если тезисно - можно попробовать сформулировать.
В чем проблема С++?
В С++ нет проблем. С++ - это всего лишь инструмент, не лучше и не хуже С.
Все проблемы лежат ЗА гранью С++.
Но они очевидны.
1. Проблема мышления на уровне абстракций.
Переходя на уровень абстракций, мозг теряет способность мыслить низкими категориями.
Это закономерно, ибо эти уровни являются взаимоисключающими by design.
2. Проблема проектирования архитектуры.
В С сделать плохое решение гораздо сложнее. Это факт.
Есть чистые данные, организованные в некие структуры, есть процедуры, ими оперирующие.
Можно выбрать неоптимальные наборы данных, можно написать неоптимальные алгоритмы.
НО. Проводить оптимизацию и рефакторинг такого кода несложно.
В С++ проблема любого большого проекта - проблема дизайна.
Есть на примете какой-нибудь проект с хорошим дизайном?
3. Проблема осознания архитектуры.
ОК, допустим, в предыдущем пункте мы нашли-таки проект с хорошим дизайном.
Однако проект живет своей жизнью - авторы меняются, новые замыслы приходят на смену старым.
Для того, чтобы эффективно развивать проект надо полностью осознать концепцию существующей архитектуры.
Иначе как ни крути - получается "дома с пристройками" (с) orefkov.
На досуге можно попробовать оценить иерархию классов в маленьком проекте 1cpp.
Можно еще нарисовать иерархию классов MFC

Я в свое время подбрасывал оба проекта doxygen'у - было очень познавательно.
И все равно нихрена не понятно.
4. Ну, чисто языковые проблемы C++ (типа перегрузки операторов || &&) я вообще оставлю в стороне.
На эту тему существует множество книг (типа С++ gotchas и т.д.).
5. Время подготовки специалиста.
Для программирования на С нужно прочитать одну книжку К&R (Керниган/Ритчи).
Ладно, так и быть, еще одну книжку по среде исполнения.
Ну да, еще немножко математики и профильного образования, чтобы хоть как-то писать какие-то алгоритмы.
Сколько книг нужно по C++, чтобы ХОТЯ БЫ перестать лепить полную лажу?
Я так и думал, что вы скажете, что одной хорошей хватит.

Хрен бы там.
В общем, смысл в следующем: для подготовки программиста на C требуется человек (не каждый) и время.
Для подготовки программиста С++ требуется человек (уже совсем не каждый) и гораздо большее время.
Интегрально, сложность систем, написанных на C++, намного выше, чем написанных на C.
Уровень абстракций, призванный эту сложность уменьшить, на деле дает лишь иллюзию уменьшения сложности.
Просто сложность переходит на другой уровень, разгружая мозг кодера и загружая мозг архитектора.
К сожалению, не каждый человек может быть эффективным программистом.
И далеко не каждый эффективный программист может быть эффективным архитектором.
И тем не менее, каждый пытается.
Вот, собственно, и все проблемы С++.