Je te conseille la lecture des bouquins de Meyers, qui te permettraient de comprendre que ce que tu viens d'écrire, c'est de la merde.
intmain(){std::vector<int>*pv=newMyVector<int>;pv->push_back(5);try{std::cout<<(*pv)[1]<<std::endl;}catch(conststd::exception&e){std::cout<<"received exception"<<std::endl;return1;// undefined behaviour}deletepv;// explosion en volreturn0;}
La norme, tu sais, le document qui décrit peu ou prou le langage C++ (comprenant la STL), spécifie clairement que les conteneurs standards ne sont pas dérivables publiquement. Tu es tombé dans le piège à débutant. Welldone.
Ici, le soucis est évidement que les conteneurs standards ne définissent pas de destructeur virtuel, ce qui fait que la classe template n'est pas conçue pour être dérivée.
Au pire, tu aurais pu composer avec l'héritage privé, s'eut été acceptable, mais ta classe dérivée n'aurait plus été un std::vector.
[^] # Re: works for me
Posté par LupusMic (site web personnel, Mastodon) . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 2.
Je te conseille la lecture des bouquins de Meyers, qui te permettraient de comprendre que ce que tu viens d'écrire, c'est de la merde.
La norme, tu sais, le document qui décrit peu ou prou le langage C++ (comprenant la STL), spécifie clairement que les conteneurs standards ne sont pas dérivables publiquement. Tu es tombé dans le piège à débutant. Welldone.
Ici, le soucis est évidement que les conteneurs standards ne définissent pas de destructeur virtuel, ce qui fait que la classe template n'est pas conçue pour être dérivée.
Au pire, tu aurais pu composer avec l'héritage privé, s'eut été acceptable, mais ta classe dérivée n'aurait plus été un std::vector.