GTK+可以和c++一起使用吗?
Is it possible to use GTK+ with C++?
我正在选择一个GUI工具包来学习c++。我在网上做了一些搜索,大多数人建议用GTKmm代替GTK+。尽管如此,我还是看到过一些使用GTK+开发的c++应用程序。
因此,我只想知道具体原因:
1. 为什么GTKmm更适合c++ ?
2. 如果我将GTK+用于c++ 应用程序而不是GTKmm,我将面临哪些限制 ?
- gtkmm允许您使用普通的c++技术编写代码,例如封装、派生和多态性。作为一名c++程序员,你可能已经意识到这会导致代码更清晰、更有组织。
- gtkmm是更类型安全的,所以编译器可以检测到只有在运行时使用c时才能检测到的错误。这种特定类型的使用也使API更清晰,因为你可以通过查看方法的声明来看到应该使用哪些类型。继承可以用来派生新的小部件。在GTK+ C代码中派生新的小部件是如此复杂和容易出错,以至于几乎没有C编码人员这样做。作为一名c++开发者,你知道派生是一项重要的面向对象技术。可以使用
- 成员实例,简化内存管理。所有GTK+ C小部件都使用指针来处理。作为一名c++程序员,你知道指针应该尽可能地避免使用。
- 更少的代码。GTK+ C对象模型使用带前缀的函数名和强制类型转换宏。例如:
gtk_button_set_text(GTK_BUTTON(button), "sometext");
gtkmm c++代码更短、更清晰。例如:button.set_text("sometext");
不需要担心GTK+不一致的引用计数策略。
来源:http://live.gnome.org/gtkmm/FAQ
相关文章:
- 如何将enable-if与模板参数和参数包一起使用
- 如何将PERF_AMPLE_READ与mmap一起使用
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将C++中的库和头与MinGW一起使用
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 为什么我不能将 rand() 与数组的大小一起使用?
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 将fold表达式与std::一起用于两个元组
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 将 std::allocate_shared 与多态资源分配器一起使用
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 将 exprtk 与自定义类的对象一起使用
- 将 std::set 与基于键的比较器一起使用
- 将 C++ 类与 Rcpp 一起使用,从 C 或 R 修改它
- 如何将 Eigen::Ref 与 pybind11 一起使用?
- 如何将AERT_Allocate与 std:vector 一起使用
- 如何使我的 sizeof sum 结构与空参数包一起工作
- 在将 new 与指针一起使用时,创建数组的指定长度