pNewItem = new TMenuItem(this);
pubString = (AnsiString)omcLoadString(g_tHResSw,CM_AP_SW_30);
pNewItem->Caption = pubString;//"全不选";//"Add FilePkg";
struct UnSelectedAllClick
{
void __fastcall OnClick(TObject* sender)
{
swnewMain->SelectAll(false);
}
};
static UnSelectedAllClick* unselect = 0;
delete unselect;
unselect = new UnSelectedAllClick;
pNewItem->OnClick = unselect->OnClick;
pmnSw->Items->Add(pNewItem);
}
这样写有啥好处?能否改成一种更通俗易懂的形式呢?
14 个解决方案
#1
晕,这种代码停留在80年代
#2
还用STRUCT 标示CLASS的方法,确实是以前的一种语法,但也有一个好处,就是不用构造和析构来的。
#3
有点看不懂了.
#4
就是用结构表示类,因为类是在结构上扩展的。
#5
就是一个类
#6
如果是在swnewMain成员函数内有点多余,否则没什么不妥.
#7
很正常的东西
#8
就是嵌套类,一般的C++教程都有介绍
---------“还用STRUCT 标示CLASS的方法,确实是以前的一种语法,但也有一个好处,就是不用构造和析构来的。”
上面这个恐怕不是的吧,STRUCT与CLASS在C++里的唯一区别就是STRUCT默认成员为公有,而CLASS默认为私有,STRUCT不是什么以前的语法,该构造还是要构造,该析构就析构,而且CLASS也也可以不写构造函数和析构函数。
---------“还用STRUCT 标示CLASS的方法,确实是以前的一种语法,但也有一个好处,就是不用构造和析构来的。”
上面这个恐怕不是的吧,STRUCT与CLASS在C++里的唯一区别就是STRUCT默认成员为公有,而CLASS默认为私有,STRUCT不是什么以前的语法,该构造还是要构造,该析构就析构,而且CLASS也也可以不写构造函数和析构函数。
#9
这是很久代码习惯
#10
就是为了在不修改才来的类型,不愿意新写一个类的时候临时构造一个类方法完成__closure的语法.这种办法是随处可写,但是不好处在于,代码显得烦多,替代的方法就是构造一个全局的类对象,而该类当中不存放任何数据,仅仅只是声明所有需要用到的方法,从而完成代码的统一管理机制.
#11
struct
{
AnsiString Text;
void __fastcall OnClick(TObject* sender)
{
ShowMessage(Text);
}
} showmessage;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TMenuItem * pNewItem = new TMenuItem(this);
pNewItem->Caption = "showmessage";
showmessage.Text = "hello";
pNewItem->OnClick = showmessage.OnClick;
MainMenu1->Items->Add(pNewItem);
}
也许是因为:手工添加事件代码比较方便吧。
{
AnsiString Text;
void __fastcall OnClick(TObject* sender)
{
ShowMessage(Text);
}
} showmessage;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TMenuItem * pNewItem = new TMenuItem(this);
pNewItem->Caption = "showmessage";
showmessage.Text = "hello";
pNewItem->OnClick = showmessage.OnClick;
MainMenu1->Items->Add(pNewItem);
}
也许是因为:手工添加事件代码比较方便吧。
#12
楼上这样写看起来爽多了。。。
#13
1。临时用而已,所以不必放在全局声明。
2。为了声明和定义放在一起看明白方便而已。
3。用结构不用类没什么区别。
2。为了声明和定义放在一起看明白方便而已。
3。用结构不用类没什么区别。
#14
這種只在某函數內使用的類或結構,使用內嵌方式,很好啊。意思很明確,這個struct就是在這個函數內臨時用一下子的。 看代碼時也不用找來找去。
只是如果代碼太多,才會被分離出來。
要通俗易懂些,簡單的方法是在嵌套類的前後加空行或注釋行。
只是如果代碼太多,才會被分離出來。
要通俗易懂些,簡單的方法是在嵌套類的前後加空行或注釋行。
#1
晕,这种代码停留在80年代
#2
还用STRUCT 标示CLASS的方法,确实是以前的一种语法,但也有一个好处,就是不用构造和析构来的。
#3
有点看不懂了.
#4
就是用结构表示类,因为类是在结构上扩展的。
#5
就是一个类
#6
如果是在swnewMain成员函数内有点多余,否则没什么不妥.
#7
很正常的东西
#8
就是嵌套类,一般的C++教程都有介绍
---------“还用STRUCT 标示CLASS的方法,确实是以前的一种语法,但也有一个好处,就是不用构造和析构来的。”
上面这个恐怕不是的吧,STRUCT与CLASS在C++里的唯一区别就是STRUCT默认成员为公有,而CLASS默认为私有,STRUCT不是什么以前的语法,该构造还是要构造,该析构就析构,而且CLASS也也可以不写构造函数和析构函数。
---------“还用STRUCT 标示CLASS的方法,确实是以前的一种语法,但也有一个好处,就是不用构造和析构来的。”
上面这个恐怕不是的吧,STRUCT与CLASS在C++里的唯一区别就是STRUCT默认成员为公有,而CLASS默认为私有,STRUCT不是什么以前的语法,该构造还是要构造,该析构就析构,而且CLASS也也可以不写构造函数和析构函数。
#9
这是很久代码习惯
#10
就是为了在不修改才来的类型,不愿意新写一个类的时候临时构造一个类方法完成__closure的语法.这种办法是随处可写,但是不好处在于,代码显得烦多,替代的方法就是构造一个全局的类对象,而该类当中不存放任何数据,仅仅只是声明所有需要用到的方法,从而完成代码的统一管理机制.
#11
struct
{
AnsiString Text;
void __fastcall OnClick(TObject* sender)
{
ShowMessage(Text);
}
} showmessage;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TMenuItem * pNewItem = new TMenuItem(this);
pNewItem->Caption = "showmessage";
showmessage.Text = "hello";
pNewItem->OnClick = showmessage.OnClick;
MainMenu1->Items->Add(pNewItem);
}
也许是因为:手工添加事件代码比较方便吧。
{
AnsiString Text;
void __fastcall OnClick(TObject* sender)
{
ShowMessage(Text);
}
} showmessage;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TMenuItem * pNewItem = new TMenuItem(this);
pNewItem->Caption = "showmessage";
showmessage.Text = "hello";
pNewItem->OnClick = showmessage.OnClick;
MainMenu1->Items->Add(pNewItem);
}
也许是因为:手工添加事件代码比较方便吧。
#12
楼上这样写看起来爽多了。。。
#13
1。临时用而已,所以不必放在全局声明。
2。为了声明和定义放在一起看明白方便而已。
3。用结构不用类没什么区别。
2。为了声明和定义放在一起看明白方便而已。
3。用结构不用类没什么区别。
#14
這種只在某函數內使用的類或結構,使用內嵌方式,很好啊。意思很明確,這個struct就是在這個函數內臨時用一下子的。 看代碼時也不用找來找去。
只是如果代碼太多,才會被分離出來。
要通俗易懂些,簡單的方法是在嵌套類的前後加空行或注釋行。
只是如果代碼太多,才會被分離出來。
要通俗易懂些,簡單的方法是在嵌套類的前後加空行或注釋行。