Hogyan lehet c++-ben a "map" típusba saját osztály tenni?
Tehát nekem nem egy egyszerű map<int,char> m= {{1, 'a'}, {3, 'b'}, {5, 'c'}, {7, 'd'}};
kellene, hanem egy map<int, sajat_osztaly>.
Amikor a map-ot létrehozom, akkor hoznám létre az osztály tipusú változókat.
tehát pl.:
map<int,sajatOsztaly> m= {{1, new sajatOsztaly(2,3,"valami", 'q')}....
Mutatót akarsz tárolni, de template paraméterben nem mutatót adtál meg.
Vagy így csináld:
map<int,sajatOsztaly*> m= {{1, new sajatOsztaly(2,3,"valami", 'q')}
Vagy így:
map<int,sajatOsztaly> m= {{1, sajatOsztaly(2,3,"valami", 'q')}
Viszont ha mutatót használsz, akkor neked kell felszabadítani utólag a memóriát. Ha mindenáron mutatót akarsz használni, akkor így csináld és akkor nem kell a memóriával foglalkoznod:
map<int, shared_ptr<sajatOsztaly>> m = { { 1, make_shared<sajatOsztaly>(sajatOsztaly(2,3,"valami", 'q')) } };
... bár ebbe is bele lehetne kötni, de szerintem a te céljaidnak megfelel.
Forrás fájl elejére írd be:
#include <memory>
using namespace std;
Köszi mindenkinek a választ. :)
A probléma nektek köszönhetően megoldódott,mert egy csillagot kellett volna tenni még az egészhez.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!