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