※ 引述《[email protected] (10/100天自我觀察)》之銘言:
其實啦,其實呢.....
剛看到上面的兩個 styles 時就知道你想幹嘛了,
但是很遺憾大家慣用的寫法還是 style 1,
出現需要用到 style 2 的情形,
通常就是所謂的程式結構設計不良,
你需要一些中介層或抽象層來解決這種型別交互相依性。
#include "a.h" <------- 抽象型別 1
#include "b.h" <------- 抽象型別 2
...
#include "X.h" <------- 具象型別 1
#include "Y.h" <------- 具象型別 2
...
因為你應該讀過 OO design pattern,
所以我想你知道我在說什麼。
而且抽象型別在 C++ 還可以用 template 寫出來,
這時只要在 instantiation 的點看到 template argument 用的 type,
以及 template 本身的 definition,
無論其先後順序都可以 instantiate。
如果你連寫抽象型別都遇到要型別交互相依的問題,
你或許就該考慮再抽出一層抽象層,
或是直接 template 化,
template 化可以省下一個單位的繼承樹高度,
performance 上也會表現得比較良好。
--
Name: Tseng, Ling-hua E-mail Address: [email protected]
School: National Tsing Hua University Department: Computer Science
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage: https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮ < IP:140.119.164.252 > ╰─╮
╚╦═╦╝ ╰ * From:61-230-218-171.dynamic.hinet.net
─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 ◎