Nel seguente programma "Qui" è stampata:variabili statiche C++ della classe senza riferimenti
#include <iostream>
class Base
{
static bool temp;
static bool initTemp()
{std::cout<<"Here\n";return true;}
};
bool Base::temp = Base::initTemp();
class Derived : public Base
{};
int main() {int a;std::cin>>a;}
Nel seguente programma "Qui" non viene stampata:
#include <iostream>
template <class T>
class Base
{
static bool temp;
static bool initTemp()
{std::cout<<"Here\n";return true;}
};
template <class T>
bool Base<T>::temp = Base<T>::initTemp();
class Derived : public Base<int>
{};
int main() {int a;std::cin>>a;}
In entrambi i casi Base non è mai riferimento. L'unica differenza è che nel secondo caso è una classe template. Qualcuno può spiegarmi perché questo comportamento si verifica. Sto usando VS 2012.
'void main()' non è legale C++. Dovrebbe essere 'int main()'. –
Nel secondo esempio, "Qui" viene stampato se si crea un'istanza esplicita del membro statico: 'modello bool Base :: temp;' – willj