Re: [問題] template
用 void* 來實作泛型……
class stack {
void** _data ;
void push(void* v) ;
void* pop() ;
} ;
int main () {
// int
stack iStack ;
iStack.push ( (void*) new int ) ; // push
int* n = (int*) iStack.pop() ; // pop
// double
stack dStack ;
dStack.push ( (void*) new double ) ; // push
double* n = (double*) dStack.pop() ; // pop
} ;
用起來很麻煩的,而且效能低落,也不安全。(敝公司用的就是這種 orz)
另外一個作法是用 macro 把整個 class 宣告包起來……
#define STACK(T) class stack_##T { \
T *_data ; \
void push( T v ) ; \
T pop() ; \
}
STACK(int) ; // 等於宣告整個 stack_int
STACK(double) ; // 宣告整個 stack_double
int main () {
stack_int iStack ;
stack_double dStack ;
}
你比較喜歡哪一種 @@?
--
To iterate is human, to recurse is divine.
遞迴只應天上有, 凡人該當用迴圈. L. Peter Deutsch
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.105.151
推
03/08 23:20, , 1F
03/08 23:20, 1F
→
03/08 23:24, , 2F
03/08 23:24, 2F
→
03/08 23:31, , 3F
03/08 23:31, 3F
→
03/08 23:32, , 4F
03/08 23:32, 4F
推
03/08 23:35, , 5F
03/08 23:35, 5F
推
03/08 23:36, , 6F
03/08 23:36, 6F
→
03/08 23:36, , 7F
03/08 23:36, 7F
→
03/08 23:37, , 8F
03/08 23:37, 8F
→
03/08 23:37, , 9F
03/08 23:37, 9F
→
03/08 23:38, , 10F
03/08 23:38, 10F
→
03/08 23:39, , 11F
03/08 23:39, 11F
推
03/08 23:40, , 12F
03/08 23:40, 12F
→
03/08 23:43, , 13F
03/08 23:43, 13F
推
03/08 23:44, , 14F
03/08 23:44, 14F
→
03/08 23:45, , 15F
03/08 23:45, 15F
推
03/08 23:47, , 16F
03/08 23:47, 16F
→
03/08 23:49, , 17F
03/08 23:49, 17F
推
03/09 10:40, , 18F
03/09 10:40, 18F
→
03/09 10:55, , 19F
03/09 10:55, 19F
討論串 (同標題文章)