最近接到一個模塊,是要求做一個管理器,把一些控件屏蔽掉,, 控件都是指針。操作都是通過指向符 大體上是
m_pBtn -> 00xx();
現在考慮的方法是 創建一個空的外包類,然后切換進去。。
template <class T>
class UIHander: public T


{
};
然后把當前指針替換進去。。
template <class T>
void ReplaceType2Type(T* & pData)


{
//記錄原始 pData
.

pData = new UIHander<T>;
}
. pData ->Function(); //空
這樣子pData進行的以后 進行的操作都是無操作了現在想的問題是。 定義UIHander 為新的
class UIHander: public T


{
public:

virtual void CallHandle()
{say("disable")}
};
有沒有可能調用所有的 控件的成員函數。
pData ->Function1();
pData ->Function2();
pData ->Function3();
的時候 都調用成為
UIHander::CallHandle()
呢 .不知道這種思路能不能走通。。。
#include <iostream>
using namespace std;

class MyButton


{
public:

MyButton():x(0),y(0)
{}

virtual ~MyButton()
{}

public:
void SetXY(int p1,int p2)

{
x = p1;
y = p2;
}
void Func1()

{
cout <<"x = " << x<< " " <<"y = " <<y <<endl;
}
private:
int x;
int y;


};

template <class T>
class UIHandle:public T


{

void SaySomthing()
{}
};

template <class T>
void HandleFunction(T*& pData)


{
//-保存先不管

pData = new UIHandle<T>;
}

int main()


{
//MyButton myBtn;
MyButton* pButton = new MyButton;
pButton ->SetXY(100,99);
//cout << "Hello world!" << endl;
pButton ->Func1(); //輸出 100,99

HandleFunction(pButton);

pButton ->Func1(); //變成空類了。。輸出 0.0
//-考慮的情況是這里。。。。。Func1 能不能通過什么方法實現到 調用 SaySomthing() {}

return 0;
}
順便牢騷下。。。opera下這個blog怎么不能排版 T.T







然后把當前指針替換進去。。











. pData ->Function(); //空













UIHander::CallHandle()
呢 .不知道這種思路能不能走通。。。











































































順便牢騷下。。。opera下這個blog怎么不能排版 T.T