2012-07-01 34 views
0

我有一個想使我的幾何CadThread類。此類具有一個公共時隙void MakeMesh(cadData aCadData)調用的取決於模型類型(從aCadData)的命名空間的功能之一(在MakeMeshStructure.hh定義):從Qt的類名爲namespace函數返回回類

namespace MeshStructure1 { 
void MakeMeshStructure (//parameters...); 
} 
namespace MeshStructure2 { 
void MakeMeshStructure (//parameters...); 
} 
namespace MeshStructure3 { 
void MakeMeshStructure (//parameters... 

此功能產生內部例如MakeMeshStructure3.cc形狀。我想返回這個形狀回調用它們像一個時隙CadThread類:背面

void Add_Shape(TopoDS_Shape& shape, Quantity_NameOfColor colorName); 

所以我可以發射從該槽的形狀(或者只是成員函數),以主線程時MakeMeshStructure3產生一個形狀(一次運行MakeMeshStructure3產生幾種形狀)。

誰能給我這是如何做到正確的例子嗎?

回答

1

我不完全理解你的代碼(一個不太抽象的例子可能是有幫助的),但是這聽起來好像是使用多態,而不是命名空間的好地方。創建一個基類MeshStructure類,並讓所有其他結構對它進行子類化。使形狀也是多態的,所以每個網格結構都會產生不同的形狀,但是它們都可以被指針或引用所對待。

0

如果MakeMeshStructure#.cc中的代碼使用Qt,那麼我不會看到你的問題是什麼:只是在那裏發出一個信號,甚至是從一個臨時的QObject發出一個信號,然後完成它。

如果網狀編碼器代碼是而不是使用Qt,或者你想保持最小的Qt依賴性,那麼只需讓代碼在堆上生成網格並將其傳遞給函數指針調用的函數。該函數可以在網格生成器的外部,並且可以在它所知道的QObject實例上發出一個信號,或者將一個事件發佈到cad線程。