没有发现语法错误,但的确不知为什么不能编译通过。如果进行如下修改可以通过。
. I* Z4 s* F5 d, c2 z0 j
i) A6 f; B" @* Q" k! J //模板对象2: X, N `$ z* h5 u$ ~0 L, a
//template<typename T> 注释掉这一行: A! C( I5 s" c7 P4 `
class CTemplate2
! H$ Z: U% Q n4 B+ _ {
9 `9 P; m& R7 G public:
7 o" K/ d" a9 {# E, f2 M template<typename F>
; J( q2 k& ^% p# q+ |; P8 `8 H4 ? bool find_if(const int key)+ r0 s) t7 _. l8 W$ H5 C
{ p; h" p1 W2 n1 D5 P& d
F f;
5 A/ I+ @- Q* @ T val;
1 z. R* G6 Q8 @; _ val.v1 = 0;
/ |- g' `2 C1 M6 K" X: R9 g val.v2 = 1;
8 I J6 a2 y/ k. U, F8 [. R3 Z2 \ return f(key,&val);
' G1 p9 a. F. W- d7 o3 b7 m; O }2 d% t+ R3 y4 _: M B* l# P
};, k8 y0 a8 c1 c3 C% }+ ^
7 F5 M6 J/ ?0 X7 x
7 X. _. \: T; c, s: ]$ v; X2 r6 ]
$ w) v* d2 J% t; R1 l
int main(int argc,char* argv[])
! ]+ L3 g2 C" W0 ?0 W( h) u/ j; l {
4 \8 U3 X& h6 j% Y/ `- w // CTemplate1<svalue> t1;
; Y, ^( Z/ c& g4 I $ s8 m' {9 V+ n0 L8 V
CTemplate1 t1; //将CTemplate1改为非模版类, u6 S8 ~9 J! t! l6 u* H" N$ Y: I
7 x" v% D/ R3 `4 L5 Y if (t1.method(0))3 K: y% J! `- l5 t& ]+ v
return -1;. s5 f3 V9 ?4 l6 B( }! E4 Y9 \1 O
return 0; u/ a5 K5 k8 k5 y4 t
}