Меня могут обвинить в предвзятости, поскольку я помогаю вносить вклад в gtkmm, но сначала я был пользователем, так что ... В любом случае, я очень рекомендую gtkmm, если вы знакомы с C ++. С помощью gtkmm управление памятью намного проще, чем с GTK +, поскольку объекты с подсчетом ссылок управляются автоматически с помощью интеллектуальных указателей. Вы также можете создавать экземпляры объектов как автоматические переменные (например, в стеке), и их время жизни определяется их областью действия. Так что на практике гораздо проще избежать утечек памяти с помощью gtkmm, чем с GTK +.
Другим огромным преимуществом gtkmm перед GTK + (на мой взгляд) является использование структуры типов сигналов безопасности. В GTK + вам постоянно нужно передавать вещи как пустые указатели, а затем приводить их к тому типу, который, как вы думаете, должен быть. В gtkmm вам не нужно этого делать, и вы можете воспользоваться преимуществами компилятора, обеспечивающего безопасность типов в ваших обработчиках сигналов.
Еще одним большим преимуществом по сравнению с C / GTK + является простота создания новых классов. В GTK + вам нужно написать много стандартного кода и, в основном, заново реализовать вещи, которые вы получаете бесплатно в C ++ как часть языка (например, наследование, конструкторы, деструкторы и т. Д.). Это более утомительно и подвержено ошибкам.
Greyfade упомянул, что gtkmm неполна, и он в некоторой степени прав - gtkmm не охватывает абсолютно все в GTK + API (хотя он очень близко подходит). Но на практике это не проблема, потому что вы всегда можете использовать API C / GTK + непосредственно из своего кода gtkmm. Эта совместимость с C является огромным преимуществом C ++ перед чем-то вроде привязок C # или python, где у вас не будет альтернатив, если привязка не покрывает часть API.
Единственными реальными причинами выбора GTK + вместо gtkmm (IMO) является то, что у gtkmm есть небольшие дополнительные издержки, поскольку это оболочка над библиотекой C (но обычно это всего лишь один вызов функции, который будет незначительное влияние), или если вы ненавидите или не можете использовать C ++.