|
아래소스는 헤더파일에 선언된 클래스들인데
템플리트안의 클래스변수에 TMyCustomControl 을 넣어주려고 합니다.
그런데 템플리트 선언의 ~TMyCustomView() 에서 자꾸 에러가 나네요
에러는 TMyCustomView<TMyCustomControl>::~TMyCustomView() must be declared with
one parameter. 이라고 나는데 TMyCustomControl 이 아닌 int 같은 타입을 매개변수 T 로
넣어주면 그런 에러가 안납니다. TCustomControl 의 프리방식이 좀 달라서 그런거 같은데
어떻게 하면 되는지요?
~TMyCustomView() {}; 부분을 없애면 문제없이 됩니다만..
프리되는 루틴이 꼭 필요해서..
template <class T>
class TMyCustomView : public T
{
public:
TMyCustomView(Classes::TComponent * aOwner): T(aOwner) {};
~TMyCustomView() {};
};
//---------------------------------------------------------------------
class TMyCustomControl : public TCustomControl
{
public:
__property Canvas;
__fastcall virtual TMyCustomControl(Classes::TComponent *aOwner) : TCustomControl(aOwner) {};
__fastcall virtual ~TMyCustomControl() {};
};
class TMyFormView : public TMyCustomView<TMyCustomControl>
{
public:
TMyFormView(Classes::TComponent aOwner) : TMyCustomView<TMyCustomControl>(aOwner) {}
~TMyFormView() {};
};
|