这些天在看iosbase发现了一个typename的问题,还是慢慢看c++ primer吧
先把代码保存下
- #ifndef A_H_
- #define A_H_
- #include <iostream>
- using namespace std;
- template <typename T>
- class A
- {
- private:
- static int aa; //静态数据成员声明
- static const int count = 24; //静态常数据成员声明(可以在此初始化)
- const int bb; //常数据成员
- public:
- A(int a);
- static void print(); //静态成员函数
- enum _fmtenum
- {
- fmtmask = 0xffff,fmtzero = 0
- };
- static const _fmtenum enumItem = (_fmtenum)_BASEENUM;
- };
- template <class T>
- A<T>::A(int a):bb(a)
- { //常成员的初始化
- aa += 1;
- }
- template <class T>
- void A<T>::print()
- {
- cout << "connt=" << count<< endl;
- cout << "aa=" << aa << endl;
- cout << enumItem << endl;
- };
- template <class T>
- int A<T>::aa = 0; //静态成员定义
- //const int A::count = 25; //静态常成员初始化
- #endif
- template <class T>
- const typename A<T>::_fmtenum A<T>::enumItem; //就是不明白这一句
- int main(){
- A<int> a(10);
- A<int>::print(); //通过类访问静态成员函数
- a.print(); //通过对象访问静态成员
- }
模板是我自己加的,