<div>I frequently have this situation:</div><div><br></div><div>- A Qt form object called Form.</div><div>- I want to store an object of a class which encapsulates a particular functionality, say ImageSegmentation in the Form object</div>

<div>- ImageSegmentation is templated on the type of image it should operate on, and this type is specified by a user action at runtime</div><div>- Because of this, I can&#39;t store a Segmentation&lt;T&gt; as a member variable in Form because I don&#39;t know T.</div>

<div>- I&#39;ve been overcoming this by creating a non-templated SegmentationBase class that I can store a pointer to in Form (i.e. SegmentationBase* MySegmentationBase;</div><div>- I then instantiate the class at runtime with</div>
<div>MySegmentationBase = new Segmentation&lt;itk::Image&lt;unsigned char, 2&gt; &gt;();</div>
<div><br></div>This has been working, except that I end up jumping through hoops to get the output of the segmentation (or whatever operation I am doing with this pattern). That is, I want to have a <div><br></div><div>template &lt;typename T&gt;</div>
<div>class Segmentation : public SegmentationBase</div><div>{</div><div> T GetResult();</div><div>}</div><div><br></div><div>that I can call from:</div><div><br></div><div>Form::SomeFunction()</div><div>{</div><div> T result = MyImageSegmentationBase-&gt;GetResult();</div>
<div> ... do something with &#39;result&#39; ...</div><div>}</div><div><br></div><div>The problem with that is two fold. </div><div><br></div><div>1) GetResult is only defined in Segmentation (not the Base) because the return type is T. </div>
<div>2) I don&#39;t know T in SomeFunction(), so I can&#39;t get the value anyway.</div><div><br></div><div>I tried to fix (1) by making a pure virtual GetImage() in SegmentationBase which returns a itk::DataObject::Pointer and also making Segmentation return a itk::DataObject::Pointer, but it has trouble with the conversion from T::Pointer to itk::DataObject::Pointer. But even if that worked, I&#39;d be stuck with (2).</div>
<meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><br></div><div>Here is the whole layout:</div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><a href="http://codepad.org/lWvNYc2g">http://codepad.org/lWvNYc2g</a></div>
<div><br></div><div>Any suggestions? I hope I am just making this more complicated than it needs to be, because it seems like a pretty standard thing to want to do!</div><div><br clear="all">Thanks,<br><br>David<br>
</div>