ui 드가 대강 이름이랑 복잡도는 좀 다르지만 대강 이렇습니다.

생각나는데로 적었고 허접이니 코드가 좀 이상해보여도 이해를..


typedef void (InitDataFunc *)(void *data);


class ButtonFuncClass

{

private:

struct commonData { /* DATA */ };


public:

union data { struct _imageData { /* IMAGE DATA */ } imageData; struct _textData { /* TEXT DATA */ } textData;  .... };


public:

virtual void func(InitDataFunc initDataFunc);

};


void InitImageDataFunc(void *data)    // 질문의 요지는 이걸 사용하지않고 클래스안에서 깔끔하게 초기화시키는 코드를 넣을수 있는지가 궁금합니다..

{

ButtonFuncClass::data::_imageData *image = data;

/* 데이터 초기화 */

}


class ImageButtonFuncClass : public ButtonFuncClass

{

public: virtual func(InitDataFunc initDataFunc) {InitDataFunc(this.data.imageData);  /* 이미지 데이터로 이미지처리 */ };

};


void DrawImageButtonClass::ButtonKlick(ButtonFuncClass funcInstance)

{

funcInstance.func(InitImageDataFunc);

}



EOF


InitImageDataFunc가 필요한 이유가 클래스를 ButtonFuncClass를 상속받아서 계속새로만드는게 아니라

ImageButtonFuncClass를 데이터만 바꿔서 재사용하려니 함수포인터로 콜백하는 뻘짓을 하게되네요.

ImageButtonFuncClass클래스만 넘기고 ImageButtonFuncClass클래스안에서 데이터를 다르게 초기화하는 방법이 없을까요.

DrawImageButtonClass도 매번 새로 클래스를 짤수없는 상황입니다.

허접한질문 읽어주셔서 감사합니다.