quentinliu
天下之事败于懒与私
C++博客
首页
新随笔
联系
聚合
管理
1 Posts :: 0 Stories :: 5 Comments :: 0 Trackbacks
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔档案
2011年1月 (1)
文章分类
ACM
DirectX
OpenGL
程序Tips
其他
休闲文章
搜索
最新评论
1. re: 最近编程想到的一种思路。不知道有没有可能实现
评论内容较长,点击标题查看
--arrow8209
2. re: 最近编程想到的一种思路。不知道有没有可能实现
@a
是新的类。。我在想有没有可能通过什么技巧实现 被外包类覆盖过的原始类调用函数都调用一个覆盖函数呢 @。@,换句话就是Hook掉 原类的成员函数。。
--quentinliu
3. re: 最近编程想到的一种思路。不知道有没有可能实现[未登录]
看不懂,空的外包类也是一个新的button啊,fun1()只是显示初始值
--a
4. re: 最近编程想到的一种思路。不知道有没有可能实现
插入了一段代码。。。。应该大体上是这个思路。。。求高人指点迷津。
--烟圈
5. re: 最近编程想到的一种思路。不知道有没有可能实现
不太理解你的真实意图,根据你的第一句话的描述,如果控件的接口不一致的话,可以考虑Adapter结合Visitor模式。
--right
最近编程想到的一种思路。不知道有没有可能实现
最近接到一个模块,是要求做一个管理器,把一些控件屏蔽掉,, 控件都是指针。操作都是通过指向符 大体上是
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
posted on 2011-01-14 14:12
烟圈
阅读(1349)
评论(5)
编辑
收藏
引用
Feedback
#
re: 最近编程想到的一种思路。不知道有没有可能实现
2011-01-14 15:22
right
不太理解你的真实意图,根据你的第一句话的描述,如果控件的接口不一致的话,可以考虑Adapter结合Visitor模式。
回复
更多评论
#
re: 最近编程想到的一种思路。不知道有没有可能实现
2011-01-14 15:56
烟圈
插入了一段代码。。。。应该大体上是这个思路。。。求高人指点迷津。
回复
更多评论
#
re: 最近编程想到的一种思路。不知道有没有可能实现[未登录]
2011-01-15 16:50
a
看不懂,空的外包类也是一个新的button啊,fun1()只是显示初始值
回复
更多评论
#
re: 最近编程想到的一种思路。不知道有没有可能实现
2011-01-15 16:56
quentinliu
@a
是新的类。。我在想有没有可能通过什么技巧实现 被外包类覆盖过的原始类调用函数都调用一个覆盖函数呢 @。@,换句话就是Hook掉 原类的成员函数。。
回复
更多评论
#
re: 最近编程想到的一种思路。不知道有没有可能实现
2011-01-21 00:13
arrow8209
你去了解一下智能指针,跟你的这个功能有点像,但是不是这样实现的。
我大致明白你的意思,你看这样行不行。
template <class T>
class UIHander: public T
{
T* m_p;
//你重载了这操作符,函数里面你想怎么玩就怎么玩
T* operator ->(){return m_p;}
void SaySomthing(){}
}
main()
{
MyButton *p = new MyBUtton();
UIHander<MyButton> tmp;
tmp.m_p = p;
tmp->Func1();
tmp.SaySomting();
}
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 烟圈