#include "itkImage.h"
#include <iostream>
class SegmentationBase
{
public:
virtual itk::DataObject::Pointer GetImage() = 0;
};
template<typename T>
class Segmentation : public SegmentationBase
{
public:
typename T::Pointer Image;
itk::DataObject::Pointer GetImage()
//typename T::Pointer GetImage()
{
return this->Image;
}
};
template<typename T>
class Form
{
public:
Segmentation<T>* MySegmentation;
void Init()
{
this->MySegmentation = new Segmentation<T>();
}
};
int main(int argc, char *argv[])
{
Form< itk::Image<unsigned int, 2> > myForm;
myForm.Init();
// How do I specify the type of A?
myForm.MySegmentation->GetImage();
return 0;
}