Это пример, взятый из geeksforgeeks. Я не понимаю следующий код.Как использовать статическую переменную в шаблоне класса C++
template<class T> int Test<T>::count = 0;
Рассчитывает внешнюю переменную? Почему бы просто не дать статическому int count = 0? Описание и код в geeksforgeeks перечислены ниже.
Шаблоны классов и статические переменные: Правило для шаблонов классов же, как и функция шаблонов Каждой конкретизации шаблона класса имеет свою собственную копию члены статических переменные. Например, в следующей программе есть два примера Test and Test. Таким образом, существуют две копии статического счета .
#include <iostream>
using namespace std;
template <class T> class Test
{
private:
T val;
public:
static int count;
Test()
{
count++;
}
// some other stuff in class
};
template<class T>
int Test<T>::count = 0;
int main()
{
Test<int> a; // value of count for Test<int> is 1 now
Test<int> b; // value of count for Test<int> is 2 now
Test<double> c; // value of count for Test<double> is 1 now
cout << Test<int>::count << endl; // prints 2
cout << Test<double>::count << endl; //prints 1
getchar();
return 0;
}