Too few template-parameter-lists
《STL源码剖析》p27页代码:
C++语言: Codee#25955
01 #include <iostream>
02 using namespace std;
03
04 template <typename T>
05 class TestClass
06 {
07 public:
08 static int _data;
09 };
10
11 int TestClass<int>::_data = 1;
12 int TestClass<char>::_data = 2;
13
14 int main()
15 {
16 cout<<TestClass<int>::_data<<endl
17 <<TestClass<char>::_data<<endl;
18
19 TestClass<int> obji;
20 TestClass<char> objc;
21
22 cout<<obji._data<<endl
23 <<objc._data<<endl;
24
25 return 0;
26 }
02 using namespace std;
03
04 template <typename T>
05 class TestClass
06 {
07 public:
08 static int _data;
09 };
10
11 int TestClass<int>::_data = 1;
12 int TestClass<char>::_data = 2;
13
14 int main()
15 {
16 cout<<TestClass<int>::_data<<endl
17 <<TestClass<char>::_data<<endl;
18
19 TestClass<int> obji;
20 TestClass<char> objc;
21
22 cout<<obji._data<<endl
23 <<objc._data<<endl;
24
25 return 0;
26 }
编译出现以下错误:
Too Few Template Parameter Lists
没有一成不变的东西,编译器也会变的
据提示修改代码:
C++语言: Codee#25956
01 #include <iostream>
02 using namespace std;
03
04 template <typename T>
05 class TestClass
06 {
07 public:
08 static int _data;
09 };
10
11 template<> int TestClass<int>::_data = 1;
12 template<> int TestClass<char>::_data = 2;
13
14 int main()
15 {
16 cout << TestClass<int>::_data << endl
17 << TestClass<char>::_data << endl;
18
19 TestClass<int> obji;
20 TestClass<char> objc;
21
22 cout << obji._data << endl
23 << objc._data << endl;
24
25 return 0;
26 }
02 using namespace std;
03
04 template <typename T>
05 class TestClass
06 {
07 public:
08 static int _data;
09 };
10
11 template<> int TestClass<int>::_data = 1;
12 template<> int TestClass<char>::_data = 2;
13
14 int main()
15 {
16 cout << TestClass<int>::_data << endl
17 << TestClass<char>::_data << endl;
18
19 TestClass<int> obji;
20 TestClass<char> objc;
21
22 cout << obji._data << endl
23 << objc._data << endl;
24
25 return 0;
26 }