//?mytemplate.h?文件
#ifndef?_MYTEMPLATE_H_
#define?_MYTEMPLATE_H_
template<typename?_T>
class?mytemplate{
????T?val;
public:
????void?display();
}
#include?"mytemplate.cpp"
#endif
//?文件?mytemplate.cpp
#ifdef?_MYTEMPLATE_H_
template<typename?T>
void?mytemplate<T>::display(){
?????cout<<val<<endl;
}
#endif
這樣做的好處是我只需改變一個地方就可以使模板有不同的實現,避免了
把不同的實現放在同一個文件里時難以避免的預編譯標記(那些預編譯標記
常常很難用,因為記住它們都很麻煩),而且文件短小,閱讀維護起來更
方便(一個例子是你需要比較模板的不同實現的綜合性能時,把它的幾個實現
都寫到一個文件里常常會把人搞糊涂).
不管怎樣做,程序必須在聲明模板實例以前就"看見"了模板的實現部分
posted on 2006-07-09 16:38
豪 閱讀(720)
評論(0) 編輯 收藏 引用 所屬分類:
Basic C++