0
新的托管c + +和堆栈溢出,所以我希望我这样做是正确的。从基类引用派生类参数
我很难找到一种方法来编写一个基类参数,需要派生类的类变量的函数。
我的基类叫做ImageBase,它有两个类变量:int rows,cols;
public ref class ImageBase
{
public:
int num_rows;
int num_cols;
}
从派生是一个抽象,模板类称为ImageT仅包含模板化2-d阵列,PIX:
template<class T> public ref class ImageT abstract : public ImageBase
{
public:
property T** pix
{
public: T** get() { return rows; }
protected: void set(T** val) { rows = val; }
}
}
从ImageT派生是RealImage,ShortImage和ComplexImage,其简单地改变模板类型“T”分别浮动,缩短或复杂。下面是类结构的一个小MS画图图,如果这是比较容易理解:
我的问题是:如果我写的是一个非常一般的功能:
void printPixels(ImageBase^ img)
所以我可以将它传递给RealImage,ComplexImage等,我如何从ImageBase类型访问变量“pix”?
试图混淆dynamic_casts后,我终于成功检查了img的类型,然后进行普通投射。 (t == Image :: typeid) \t \t Image^newImage =(Image ^)img; 感谢您的回复。 – Sooji 2013-03-07 16:11:15