作者noodleT (麵T)
看板C_and_CPP
標題[問題] 判斷類別是否有某種屬性?
時間Sat Jul 30 09:23:19 2016
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
BCB6
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
在 BCB 中
TButton, TMemo 都繼承自 TCompoent 但
TButton 的顯示文字是用 Button.Caption
TMemo 則是 Memo.Text
程式碼如下:
http://ideone.com/IZOSIi
在
bool Show(TComponent* cmp,const AnsiString &str)
判斷元件類型並且顯示文,
但覺得不好的點是在於我必須一個個判斷
該元件是 Button 還是 Memo 甚至如果有其他不同的元件,如 TLable。
這種方式就實在很麻煩。
請問有沒有類似的寫法:
bool Show(TComponent* cmp,const AnsiString &str)
{
是否有 Caption ? Caption = str;
是否有 Text ? Text = str;
}
直接抓取該元件是否擁有某種屬性?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.10.100.154
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1469841803.A.F5F.html
1F:→ james732: Reflection (啊,跑錯棚)07/30 09:28
2F:→ noodleT: 如果大家文字屬性都叫.Text 那用template就解決了07/30 10:04
3F:推 steve1012: Template07/30 10:18
4F:推 steve1012: 想一想好像不對 你是每種class都有不同的地方要放str嗎07/30 10:28
5F:→ steve1012: 像 A: caption, lable 放str B:title, content 放str07/30 10:28
6F:→ steve1012: 還是每種class都只有一個datamember 要放string07/30 10:28
不太懂你說的意思。
現在有一些元件:
TA, TB,TC 的文字都放在
.Text
使用上例如:
TA. Text = "Hello"
另外有些元件
CA, CB, CC 的文字放在Caption
CA. Caption = "Hi"
如果今天
TA, TB, TC, CA,CB,CC
的文字都放在 .Word
TA. Word = "test"
CA. Word = "test"
這樣就可以用 Template 了吧?
※ 編輯: noodleT (39.10.100.154), 07/30/2016 10:44:44
7F:推 Ommm5566: 誠心建議 這樣不好 違反OO封裝的原則 07/30 11:29
8F:→ Ommm5566: 一般慣用 "取用"會用getVar() 07/30 11:30
9F:→ Ommm5566: 所以當getVar無回傳就是沒有 是比較好的檢查方式 07/30 11:31
10F:推 CoNsTaR: 你現在要泛化不是抽象化 思考模式要改一下 07/30 13:06
11F:推 steve1012: 蠻多OOP都有reflection的吧 Java 就有 07/30 14:21
12F:推 steve1012: 你說的這樣可以 可以用enable_if 配SFINAME 應該辦得到 07/30 14:29
13F:推 ctrlbreak: 所以很多人都根據自己的需求而發明了新的語言,如: Java 07/31 01:24
14F:→ annies5: 如果你只是要把字串丟進元件,用Hint就好了,大部分的可視 08/04 14:04
15F:→ annies5: 元件都有(寫Delphi路過) 08/04 14:04