J'ai accidentellement trouvé ceci dans l'un des codes sources que je regardais. Donc, je donne un petit exemple similaire ici.
Dans le fichier test.h :
#include<iostream>
class test{
int i;
public:
test(){}
//More functions here
};
Dans le fichier test.cpp :
#include "test.h"
int main()
{
test test1;
test::test test2;
test::test::test test3;
return 0;
}
Tout d'abord, y a-t-il une raison pour déclarer test2
de cette façon ? Deuxièmement, ce code se compile très bien avec la version 4.4.3 de g++ et les versions inférieures. Y a-t-il quelque chose dans la norme C++ qui dit que les opérateurs de résolution de portée sont ignorés quand il n'y a pas besoin de résoudre la portée ?