2017-07-12 4 views
0

J'utilise scons et ubuntu. Quand je fais quand je un certain programme en utilisant « scons », il arrive erreur comme,Erreur: 'modèle <class> classe std :: auto_ptr' est obsolète

src/db/DBTextLoader.cc:296:3: error: ‘template class std::auto_ptr’ is deprecated [-Werror=deprecated-declarations]

/usr/include/c++/5/bits/unique_ptr.h:49:28: note: declared here template class auto_ptr;

et ceci est ma commande;

$ ./configuer

$ source something.sh

$ scons

En fait, je n'en ai aucune idée. Je suis déjà à la recherche de ce site et google. Mais je n'ai pas trouvé de solution.

ceci est mon g ++ version (et C++ a également été la même version.)

g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609

ont une idée? Merci.

+0

Quelle version standard de C++ transmettez-vous à G ++ ('-std =')? – StoryTeller

+1

Mise à jour vers une version ultérieure du package que vous essayez d'installer? Un qui * n'utilise pas de fonctionnalité obsolète. Ou s'il n'y a pas de version ultérieure, recherchez un autre paquet qui fait ce que vous voulez tout en étant activement développé. –

+0

@StoryTeller la version est C++ 11. donc je suis entrée scons evn_file, -std = C++ 11. –

Répondre

1

Si vous lisez quelques livres de Scott Meyers, il recommande fortement de ne pas utiliser auto_ptr. En fait, les nouveaux compilateurs peuvent restreindre son utilisation en raison de nombreux problèmes possibles lors de l'utilisation de auto_ptr dans des conteneurs STL, etc.

Vous devriez plutôt utiliser std::unique_ptr si vous ne voulez pas plus d'une copie de l'objet, et std::shared_ptr si vous devez copier le pointeur.

+0

Merci beaucoup! Je change 'auto_ptr' en 'unique_ptr', à ce moment mon problème a été résolu! Merci encore! –