problem:destruktor został niejawnie zdefiniowany jako usunięty
Ostatnio zmodyfikowano 2017-01-27 19:19
wiktorspl Temat założony przez niniejszego użytkownika |
problem:destruktor został niejawnie zdefiniowany jako usunięty » 2017-01-27 17:54:15 Witam mam taki kod. #include <iostream> #include <string> #include <conio.h> using namespace std; union test { int a; double c; string b; };
int main() { system( "PAUSE" ); return( 0 ); }
i mam takie ostreżenie destruktor został niejawnie zdefiniowany jako usunięty. Moje pytanie brzmi jak to naprawić.I dodam że jak usunę string b; to już nie mam ostrzeżenia nie wiem dlaczego. |
|
1aam2am1 |
» 2017-01-27 18:09:11 Unia nie wie co przechowuje. I gdy przechowasz w nim string odwołasz się do stringa w unii. To: a) Będą śmieci więc powinieneś wywołać wcześniej konstruktor aby mieć poprawnego zerowego stringa. Tu coś robisz z unią. Ciągle jako string -Przypadkowo odwołasz się do int i string straci spójność. Masz wyciek pamięci Więc musisz wywołać destruktor samodzielnie przed odwołaniem się do unii jako coś innego.
Ogólnie w unii najlepiej przechowywać dane które nie alokują dodatkowej pamięci. Mają stały rozmiar. Najlepiej struktury i typy podstawowe. |
|
wiktorspl Temat założony przez niniejszego użytkownika |
» 2017-01-27 19:19:40 ok dzięki wiem coś więcej dzięki tobie :D. |
|
« 1 » |