관리되는 C++ 및 스택 오버플로가 모두 새롭기 때문에이 작업을 올바르게 수행하고 싶습니다.기본 클래스에서 파생 클래스 매개 변수를 참조하는
파생 클래스의 클래스 변수가 필요한 기본 클래스 매개 변수를 사용하여 함수를 작성하는 방법을 찾는 데 어려움을 겪고 있습니다.
내 기본 클래스는 ImageBase라고하며 두 개의 클래스 변수가 있습니다. int rows, cols; 그 유래
public ref class ImageBase
{
public:
int num_rows;
int num_cols;
}
만 템플릿 2-D 어레이 PIX 포함 추상, 템플릿 클래스라는 ImageT이다 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; }
}
}
가 RealImage, ShortImage 및 ComplexImage이다을하는 단순 변경 템플리트 유형 "T"가 각각 부동, 짧게 또는 복합화됩니다. 이 쉽게 이해할 수있는 경우 여기에 클래스 구조의 작은 MS 페인트도이다 :
내 질문 : 그래서
void printPixels(ImageBase^ img)
: 내가 좋아하는 아주 일반적인 함수를 작성한다면 RealImage, ComplexImage 등을 전달하면 ImageBase 유형에서 "pix"변수에 어떻게 액세스합니까?
dynamic_casts를 엉망으로 만든 후에 마침내 img의 유형을 확인한 다음 일반 캐스트를 수행하는 데 성공했습니다. EX : 유형^t = img-> GetType() if (t == Image :: typeid) \t \t 이미지^newImage = (이미지 ^) img; 응답 해 주셔서 감사합니다. – Sooji