Bonne façon d'initialiser une carte et de supprimer, en C++
Je suis en train de créer une carte statique déclarées dans le constructeur de ma classe.
Cette carte doit être initialisé et rempli avec des données dans une méthode et gratuit d une autre méthode.
Est-ce la bonne façon de le faire?
using namespace std;
#include <map>
struct a {
string b;
string c;
}
class aClass:public myClass
{
public:
aClass();
virtual ~aClass();
private:
map<string, a> myMap;
void method(int a);
void amethod(int b);
}
void aClass::method(int a)
{
myMap = new map<string, a>;
//Addition of elements;
}
void aClass::amethod(int b)
{
//retrival of elements
myMap.clear();
delete myMap;
}
- Dans votre code, le
myMap
n'est passtatic
. Que voulez-vous dire par "statique"? - Pourquoi pensez-vous que vous avez besoin à nouveau d'une carte et de le supprimer par la suite? Il suffit de tenir une carte en valeur et à l'appel clear() sur celui-ci au moment approprié.
- Je doute que vous vouliez inclure l' [tsl] balise. J'ai édité ton post pour y inclure l' [tsl] tag à la place.
Vous devez vous connecter pour publier un commentaire.
Ici
myMap
n'est pas un pointeur, donc l'initialisation avecnew
est incorrect. Peut-être que vous êtes à la recherche pour:à copier dans
myMap
un initialisé par défaut carte.Notez que vous n'avez pas besoin (et, en fait, ne peuvent pas)
delete myMap
, que ce n'est pas un pointeur. C'est une variable membre, et le compilateur va prendre en charge automatiquement de le détruire lors de votre classe est détruite.myMap
êtremap<string,a>*
?aClass
est détruitmethod
semble inutile, car il sans doute a déjà été nettoyé.L'objet
myMap
existe déjà à l'intérieur d'une instance deaClass
et est construit lors de son contenant instance est construit. Vous n'avez pas besoin d'utilisernew
pour la créer, c'est une Java et C#) où les variables sont juste des références à quelques exemple sur le tas et tout est le garbage collector. En C++ il est plus facile de rendre les données membres d'une valeur plutôt qu'un pointeur ou une référence à un autre objet.