请教一个C++模板的问题
以下代码可以在Solaris9下用CC编译通过,vc6也能通过,# s" p9 }: `$ j; [! |+ e. J
在FC4上用g++4.0却通不过,g++3.4.6报同样的错.$ z" `0 Z: o; H7 E6 C0 d% Q: O
! E( S6 a7 L& R3 T3 } t_set.h: In member function ‘void c_set<T>::foo()’:2 `3 u2 `: g* V' H6 A* b3 t
t_set.h:13: 错误:‘m_m1’ 在此作用域中尚未声明0 N+ A6 }" u2 e% z3 g( \+ O K- ]
* w' X5 ]% b% ?3 g2 v7 F4 F
" F2 S& t4 t) G2 Y# f+ c 文件1 t_avl_tree.h
- N8 `+ c5 j1 T4 I! \ -------------------------------------------
8 e) n {+ |- H. u9 O& N( ^9 ` #ifndef T_AVL_TREE_H2 z# f3 B% A4 ]8 ^
#define T_AVL_TREE_H
5 q" \5 _; h6 y " d8 n1 n) J5 G ]2 d! c, b8 J/ p# q
class c_avl_tree_base# \0 Q2 u) o, S2 A: |4 Z# c
{
( f8 C6 }5 X- h4 q/ k/ [4 p/ b public:; I h6 R$ D6 [5 H
long m_m1; / u; |: x; r8 q7 A( P+ q
};
7 N6 d5 w9 }1 m4 m #endif //T_AVL_TREE_H
3 a" e( _6 b l" }* T) q --------------------------------------------
$ v* |3 h; b/ \2 D: k8 T( N6 f 文件2 t_single_avl_tree.h' o" U. n( ~; V( Y, x* m5 Q1 d0 P
--------------------------------------------' ~1 u+ Y( D" S/ u
#ifndef T_SINGLE_C_AVL_TREE_H
9 a+ {. F( d0 ^ #define T_SINGLE_C_AVL_TREE_H
2 E- I$ l- ^/ P' |3 b
( U: p' [' h; n #include "t_avl_tree.h"& t5 _9 y3 q& s1 F8 Y' u
1 N6 o. X) l A. k
template <class T>
0 O# G$ B {+ X. S6 { class c_single_avl_tree : public c_avl_tree_base$ H2 J8 Q. g# A7 R' D- b/ A
{
/ E6 n* @' Y8 D3 u };' D6 y2 I& X; |9 L: J' a2 T
#endif //T_SINGLE_C_AVL_TREE_H2 ]/ F' i7 c1 V; W q
--------------------------------------------& s2 n, s# {% p) P. ]
文件3 t_set.h" K. ^# ?: d6 \' r
--------------------------------------------
, c I8 j4 M7 v7 F #ifndef T_SET_H
" ^9 r+ V+ i/ ?3 }; P" G6 [- [( | #define T_SET_H9 o1 R' W: w; M. w4 s, [
, z+ m Q+ O" t; \$ ~
#include "t_single_avl_tree.h", x- B6 `; G+ h% E* Y
) F) E. _7 A- S' H) L
template <class T>
# ^( k# p. q; R1 W# y class c_set : public c_single_avl_tree<T>
5 ^! O1 W- m$ |# P) N& m1 O2 N {0 O4 F. ?2 v9 p' G- z* m8 Z$ o( R
public:4 a9 l5 u! X9 g3 ^3 D" P" W
void foo() {
5 q" Y- Q3 J! H) _; D m_m1 = 1;
0 A0 S4 k# }5 P/ I' R }
4 T3 m8 |$ d: E) v1 [. j2 V };
/ E5 j4 V: W3 e3 M% T* w
0 ^1 e. h5 X$ |" J' L* O8 \- w #endif //T_SET_H9 D1 o; v! A3 ~: F2 E6 X' R7 R
--------------------------------------------
; f! J. H+ s8 H9 \ 文件4 main.cpp
8 f) e9 _- Q s% j" ~9 g! ~ --------------------------------------------1 Z& y- s6 o5 l& B: w, q
#include "t_set.h"
0 ?% p( o+ v/ \0 S( g) G6 t/ J: W+ p
9 c5 u! [( H! Y @, u int main(int, char **): h: y- J4 z, I4 g# e$ G
{& _3 X! T4 @8 m8 @ m7 e
c_set<int> aa;* J1 y6 G& ]6 q! C! U
return 0;
; M2 k$ B6 C) D: Y) P. P }! x/ W* j" C+ _0 ?
/ d& G1 h4 P- D1 M9 J& V% | --------------------------------------------