C++
时间简史u
这个作者很懒,什么都没留下…
展开
-
std::function和std::bind怎么联合使用
是 C++ 标准库提供的一个通用函数封装器,它可以包装任意可调用对象(函数、函数指针、成员函数指针、Lambda 表达式等),并提供统一的接口进行调用。函数签名的函数、函数指针、Lambda 表达式等作为参数,这个函数对象将会在需要的时候被调用,传递。绑定到当前对象,并使用占位符占住两个参数的位置,创建一个可以调用的对象。类型,可以创建函数对象或函数指针,并将其作为。类型,将函数定义成了一个可调用对象,接受。来执行绑定的成员函数,并传递对应的参数。将会被调用,传递相应的参数。最终,将绑定后的对象赋值给。原创 2023-06-04 18:17:35 · 695 阅读 · 0 评论 -
C++函数模板怎么定义和使用
函数模板可以用于定义通用的函数形式,适用于不同类型的参数。在实际使用中,可以根据具体的需求定义和使用函数模板,提高代码的复用性和灵活性。函数模板可以通过在调用时推断模板参数,也可以显式指定模板参数。的模板参数,可以包含类型参数、非类型参数和模板参数的默认值。,用于指定待交换值的类型。函数原型中的参数类型使用了类型参数。,后跟模板参数列表和函数原型。,并且在函数体中可以直接使用类型参数来操作变量。在函数模板中,模板参数列表是一组用。的调用自动推断模板参数为。函数模板的定义使用关键字。中可以被使用,用于定义。原创 2023-06-04 16:20:55 · 692 阅读 · 0 评论 -
C++的Lambda函数怎么使用
需要注意的是,Lambda函数可以在需要函数对象的地方使用,比如作为算法函数的参数、STL容器的操作函数等。Lambda函数可以直接定义在函数内部,也可以作为函数的参数或返回值。综上所述,使用Lambda函数可以根据具体需求灵活地定义匿名函数,并直接在需要的地方使用,提供了简化代码、提高可读性和编写更灵活代码的便利性。捕获变量可以是值捕获、引用捕获或隐式捕获,它们影响了Lambda函数对变量的访问方式和生命周期的管理。此外,Lambda函数还支持捕获变量,即在Lambda函数内部访问外部的变量。原创 2023-06-04 16:17:15 · 848 阅读 · 0 评论 -
一个对象中如何保存拓扑关系和引用关系
比如,一个实体对象可以保存一个由点、线、面组成的拓扑结构,这个拓扑结构可以通过在实体对象的 TDF_Label 中保存一个 TopoDS_Shape 对象来表示;另外,一个实体对象可能会引用一组点、线、面等,这些被引用的对象可以通过在实体对象的 TDF_Label 中保存一组 TDF_Reference 对象来表示。一般来说,拓扑关系指的是对象之间的拓扑结构,比如点、线、面等之间的包含、相交等关系;而引用关系则是指一个对象引用另一个对象的方式,比如一个实体可能会引用一组点、线、面等构成自己的形状。原创 2023-05-06 15:42:55 · 265 阅读 · 0 评论 -
拓扑关系和普通引用关系有区别吗
拓扑关系是指在CAD中描述图形对象之间的空间关系,如相邻、相交、包含等。它们定义了图形对象之间的拓扑连接,用于描述它们之间的几何关系和约束。拓扑关系可以用于确定对象的位置、形状和相互作用,并在编辑和操作图形对象时提供准确的参考。在CAD开发中,拓扑关系和普通引用关系可以同时存在,并且相互补充。例如,一个CAD图形对象可以有一个指向其属性对象的引用关系,同时也可以与其他图形对象建立拓扑关系,描述它们之间的空间关系。拓扑关系主要用于描述几何和空间关系,而普通引用关系主要用于管理对象之间的数据和行为。原创 2023-05-06 15:34:00 · 215 阅读 · 0 评论 -
属性刷功能的功能分析
实现属性刷的绘制方法:在属性刷类中实现绘制方法,根据属性刷的属性值将属性应用到需要填充的图形对象上。定义属性刷的属性:属性刷通常包含颜色、透明度、线型、填充模式等属性。在属性刷类中定义这些属性的成员变量,并提供相应的访问方法用于设置和获取属性值。创建属性刷类:在C++中,创建一个属性刷类,用于封装属性刷的逻辑和操作。这可能包括将属性刷作为图形对象的一种属性、提供属性刷的编辑界面或命令行接口等。确定属性刷的功能和行为:首先要明确属性刷的作用和需要实现的功能。原创 2023-05-06 15:27:28 · 71 阅读 · 0 评论 -
RTTI技术诞生的原因
同时,RTTI也为一些框架和库的开发提供了便利,例如在面向对象的图形用户界面中,对于不同的窗口对象,可以根据其类型来选择不同的操作方式。RTTI技术允许程序在运行时判断一个对象的类型,这样就能够实现一些基于类型的操作,例如类型转换和类型安全的向下转换。RTTI可以使得程序更加灵活,可以在运行时根据对象的实际类型来选择执行不同的操作,避免了在编译时就确定的类型限制。综上所述,RTTI的优点是它提供了动态的类型识别和更好的异常处理机制,但它也有一些缺点,比如可能导致性能下降、增加代码复杂性,以及安全问题。原创 2023-05-02 19:55:51 · 699 阅读 · 0 评论 -
C++中常用的智能指针
shared_ptr:表示一个共享所有权的指针,可以有多个shared_ptr指向同一个对象,该对象会在最后一个shared_ptr被销毁时才会被销毁。unique_ptr:表示一个独占所有权的指针,同一时间只能有一个unique_ptr指向一个对象,当该unique_ptr被销毁时,所指向的对象也会被销毁。此外,在多线程环境下使用shared_ptr时需要注意线程安全问题。weak_ptr:是shared_ptr的一种补充,不会增加对象的引用计数,用于解决shared_ptr可能出现的循环引用问题。原创 2023-04-30 16:45:39 · 836 阅读 · 0 评论 -
如何基于RTTI进行开发
使用RTTI的关键是将类型信息存储在对象中,如果一个对象可以表示为一个抽象基类的指针或引用,那么在运行时可以使用dynamic_cast将其转换为具体的派生类指针或引用,从而访问其类型信息。但是,在使用RTTI时需要注意代码的性能和类型安全性,尽可能避免使用动态类型转换操作符,从而确保代码的正确性和高效性。typeid操作符可以返回一个type_info对象,包含了运行时类型的信息,如类型的名称和类型的哈希码等。使用typeid操作符可以在运行时获取对象的类型信息,然后根据类型信息进行相应的处理。原创 2023-04-30 16:38:39 · 102 阅读 · 0 评论 -
在c++中,operator怎么使用
一般来说,为了定义一个新的操作符,需要在类定义中声明和实现一个operator重载函数,其函数名为operator,后接要重载的操作符符号。需要注意的是,操作符的重载应该遵循一定的规范和约定,以保证代码的可读性、可维护性和正确性。在上面的例子中,定义了一个名为Vector的类,并重载了+操作符。使用operator关键字,可以为自定义类型定义新的操作符,也可以重载已有的操作符,使其适用于自定义类型。其中,返回类型是操作符函数返回的数据类型,操作符是要重载的操作符,参数列表是操作符函数的参数列表。原创 2023-04-25 13:41:17 · 4146 阅读 · 0 评论 -
实现一个C++的工厂模式
上述代码中,Product是产品的基类,它定义了一个抽象的use()方法。在main()函数中,我们可以使用FactoryA和FactoryB分别创建ProductA和ProductB对象,然后使用它们的use()方法。C++中的工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种将对象的创建与使用分离的方法。工厂模式通过将创建对象的代码封装在一个工厂类中,将对象的创建从主要的业务逻辑中分离出来,从而简化了代码的维护和扩展。原创 2023-04-24 16:37:38 · 66 阅读 · 0 评论 -
一个C++框架,Foundation模块中GUID、HeapOperators、Logger、Object、Path、Plugin、RTTI、Transfer起到的作用
在C++框架中,Transfer通常用于处理各种数据源、格式和协议,例如XML、JSON、CSV等,以便于系统的数据交换和处理。Object提供了一些通用的属性和方法,例如对象标识符、对象类型、对象状态等,用于管理对象的生命周期和状态。在C++框架中,Plugin通常用于管理各种插件、扩展和功能模块,以便于系统的灵活配置和扩展。GUID(全局唯一标识符):GUID是一种全局唯一的标识符,用于标识对象或实体。在C++框架中,GUID通常用于标识各种组件、接口和实例等,以便在不同的模块或进程间进行通信和交互。原创 2023-04-24 15:42:38 · 109 阅读 · 0 评论 -
一个C++框架中,Foundation的定位
提供常用工具类:foundation模块通常会提供一些常用的工具类,如字符串处理类、容器类、时间处理类等,这些工具类可以被其他模块使用,从而避免了重复编写相似的代码。在一个C++框架中,foundation通常是指框架中的基础模块,提供了一些基本的功能和工具类,是整个框架的核心。提供基本数据类型:foundation模块通常会提供一些基本的数据类型,如整型、浮点型、字符型等,这些类型是整个框架的基础,可以在其他模块中被广泛使用。原创 2023-04-24 15:40:34 · 94 阅读 · 0 评论 -
OCAF——数据结构机制 Sample2
between table lamps in the data framework. [lamp 1:sub-label (0:1)]、[lamp 2:sub-label (0:2)],定义同样树结构但是不同的属性值的灯对象,因为灯的结构组成是可以复用的。⭐结构树的复用原则2:So, after the user changes the lamp design, only。. tags是仅对应某一行的地址,tags演化出entry,再组成label,不可以把tag当作part的name。原创 2023-04-10 10:25:44 · 407 阅读 · 0 评论 -
OCAF来创建父子孙级别的结构树
这样,你就可以使用 OCAF 创建一个父子孙级别的结构树了。请注意,在实际应用中,你需要根据你的需求调整这些步骤。原创 2023-04-04 13:57:27 · 554 阅读 · 0 评论 -
OCAF——数据结构机制 Sample1
如果是新增一个“咖啡把手”,或者“另外套咖啡机械系统”,应该在原有级别的Label[Tag]下,按顺序增加兄弟Label,但是新增Label[Tag]的子Label[Tag]顺序,可以沿用原有顺序;The nesting of labels is key to OCAF. 标签的嵌套是OCAF的关键。原创 2023-04-07 18:07:01 · 302 阅读 · 0 评论 -
OCAF的术语表
在编辑和重新生成模型时需要这种引用,并且可以将其视为旧版本模型中实体的标签和名称属性到新版本中相应实体的标签和名称属性的映射。——在数据框架中,这是一个标签,它已经在重新生成序列的范围内重新计算,并且包括包含要重新计算的特征的标签。——不变的引用,可以引用应用程序中使用的任何类型的数据。在其瞬态形式下,它是数据框架中的一个标签,数据以属性的形式附加在它上面。——一种树状数据结构,在 OCAF 中,它是一棵标签树,数据以属性的形式附加到标签上。——将对一个文档所做的修改传播到引用该文档的其他文档的能力。原创 2023-04-07 11:15:06 · 537 阅读 · 0 评论 -
OCAF——框架机制
Attribute是一个抽象类OCAF数据框架是一个引用属性的聚合aggregationsOCAF数据框架使用单个层次结构OCAF数据框架使用持久化标识符整个模型或其元素的几何形状,包括对形状的引用和形状演化的跟踪。原创 2023-04-07 10:58:17 · 493 阅读 · 0 评论 -
在OCC中,AIS_interactiveContext的shiftselect有什么用
在OCC中,AIS_interactiveContext的shiftselect有什么用原创 2023-03-10 09:41:46 · 229 阅读 · 0 评论 -
在OCC7.6中,如何设置AIS的高亮优先级
在OCC7.6中,如何设置AIS的高亮优先级原创 2023-03-07 16:15:52 · 297 阅读 · 0 评论 -
在C++中,如何判断double是否有值
在C++中,如何判断double是否有值原创 2023-03-07 10:28:00 · 1333 阅读 · 0 评论 -
在OCC中,如何设置AIS_InteractiveContxt同一对象多个AIS_Shape的高亮优先级
在OCC中,如何设置AIS_InteractiveContxt同一对象多个AIS_Shape的高亮优先级原创 2023-03-06 15:40:23 · 519 阅读 · 0 评论 -
在OCC中,AIS_InteractiveContxt的selection mode有哪几种
在OCC中,AIS_InteractiveContxt的selection mode有哪几种原创 2023-03-06 15:36:40 · 261 阅读 · 0 评论 -
在OCC中,AIS_InteractiveContxt的选择激活方式有什么
在OCC中,AIS_InteractiveContxt的选择激活方式有什么原创 2023-03-06 15:29:01 · 380 阅读 · 0 评论 -
在OCC7.6中,BRepPrimAPI_makeSphere怎么构造一个3D点
在OCC7.6中,BRepPrimAPI_makeSphere怎么构造一个3D点原创 2023-03-06 14:00:49 · 232 阅读 · 0 评论 -
SelectMgr_EntityOwner有什么用?
SelectMgr_EntityOwner有什么用?原创 2023-03-05 17:34:06 · 188 阅读 · 0 评论 -
在Opencascade中,使用SelectMgr_OrFilter,如何过滤AIS_InteractiveObject对象
在Opencascade中,使用SelectMgr_OrFilter,如何过滤AIS_InteractiveObject对象原创 2023-03-04 20:26:47 · 186 阅读 · 0 评论 -
C++怎么生成UUID
C++怎么生成UUID原创 2023-03-02 16:30:45 · 866 阅读 · 1 评论 -
uchar和uint和byte有什么区别,在c++
uchar和uint和byte有什么区别,在c++原创 2023-03-02 08:48:59 · 4287 阅读 · 0 评论 -
QString怎么转成TCollection_extenedString
QString怎么转成TCollection_extenedString原创 2023-02-28 20:46:20 · 161 阅读 · 0 评论 -
split一个复杂的string,多个逗号
split一个复杂的string,多个逗号原创 2023-02-24 13:39:24 · 292 阅读 · 0 评论 -
vector<QString>怎么转成QStringList
vector怎么转成QStringList原创 2023-02-24 09:47:47 · 1289 阅读 · 0 评论 -
如何把TopoDS对象转成AIS对象
如何把TopoDS对象转成AIS对象原创 2023-02-22 18:21:14 · 380 阅读 · 0 评论 -
在C++中,什么是前置引用,和头文件引用有什么区别
在C++中,什么是前置引用,和头文件引用有什么区别原创 2023-02-22 13:36:09 · 259 阅读 · 0 评论 -
QT,如何把QString转成TCollection_ExtendedString
QT,如何把QString转成TCollection_ExtendedString原创 2023-02-22 09:27:20 · 223 阅读 · 0 评论 -
出现“a nonstatic member reference must be relative to a specific object”问题
出现“a nonstatic member reference must be relative to a specific object”问题原创 2023-02-20 20:21:05 · 3832 阅读 · 3 评论 -
C++的静态函数有什么作用
C++ 的静态函数(Static Function)是指在类中用 static 关键字修饰的成员函数,它不依赖于类的实例对象,而是作为类的一个整体进行调用。原创 2023-02-20 16:28:59 · 2593 阅读 · 0 评论 -
在C++中,“*this = 另外个类型”是什么意思?
*this = other是什么意思原创 2023-02-15 13:55:42 · 1196 阅读 · 0 评论 -
c++,出现 “no default constructor exists for class”的问题
c++,出现 “no default constructor exists for class”的问题原创 2023-02-15 09:53:31 · 1872 阅读 · 0 评论 -
在opencascad当中,AIS对象、TopoDS对象、和gp对象的区别是什么?
在opencascad当中,AIS对象、TopoDS对象、和gp对象的区别是什么?原创 2023-02-13 10:02:44 · 347 阅读 · 0 评论