C++ 从qt类调用的命名空间函数返回到类中

C++ 从qt类调用的命名空间函数返回到类中,c++,qt,namespaces,C++,Qt,Namespaces,我有一个CadThread类,它被认为是我的几何体。此类有一个公共槽void MakeMesh(cadData aCadData),该槽根据模型类型(从aCadData)调用一个命名空间函数(在MakeMeshStructure.hh中定义): 这些函数在内部生成形状,例如MakeMeshStructure3.cc。我想将这些形状返回到CadThread类,该类在插槽中调用它们,如: void Add_Shape(TopoDS_Shape& shape, Quantity_NameOfC

我有一个
CadThread
类,它被认为是我的几何体。此类有一个公共槽
void MakeMesh(cadData aCadData)
,该槽根据模型类型(从
aCadData
)调用一个命名空间函数(在MakeMeshStructure.hh中定义):

这些函数在内部生成形状,例如MakeMeshStructure3.cc。我想将这些形状返回到CadThread类,该类在插槽中调用它们,如:

void Add_Shape(TopoDS_Shape& shape, Quantity_NameOfColor colorName);
因此,当MakeMeshStructure3生成一个形状(一次运行
MakeMeshStructure3
生成多个形状)时,我可以将该形状从这个插槽(或者可能只是成员函数)发送回主线程


有谁能给我一个例子来说明这是如何做到的吗?

我不完全理解您的代码(一个不太抽象的例子可能会有帮助),但在我看来,这是一个使用多态性而不是名称空间的好地方。创建一个基本的
MeshStructure
类,并让所有其他结构子类化它。使形状也具有多态性,这样每个网格结构都会产生不同的形状,但它们都可以通过
形状
指针或引用来处理。

如果
MakeMeshStructure.cc
中的代码使用的是Qt,那么我看不出你的问题是什么:只是在那里发出一个信号,即使是从一个临时的QObject,就这样吧

如果meshmaker代码没有使用Qt,或者您希望保持Qt依赖关系最小,那么只需让代码在堆上生成网格,并将其传递给由函数指针调用的函数即可。该函数可以位于meshmaker外部,并将在其知道的QObject实例上发出信号,或将事件发布到cad线程

void Add_Shape(TopoDS_Shape& shape, Quantity_NameOfColor colorName);