マネージ C++ とスタック オーバーフローの両方が初めてなので、これを正しく行っていることを願っています。
派生クラスのクラス変数を必要とする基本クラス パラメーターを持つ関数を記述する方法を見つけるのに苦労しています。
私の基本クラスは ImageBase と呼ばれ、2 つのクラス変数があります。
public ref class ImageBase
{
public:
int num_rows;
int num_cols;
}
そこから派生したのは、テンプレート化された 2 次元配列 pix のみを含む、ImageT と呼ばれる抽象化されたテンプレート化されたクラスです。
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」をそれぞれ float、short、complex に変更するだけです。これが理解しやすい場合、クラス構造の小さなMS Paintダイアグラムを次に示します。
私の質問は、次のような非常に一般的な関数を書く場合:
void printPixels(ImageBase^ img)
RealImage、ComplexImageなどを渡すことができるように、ImageBaseタイプから変数「pix」にどのようにアクセスしますか?