Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

problem:destruktor został niejawnie zdefiniowany jako usunięty

Ostatnio zmodyfikowano 2017-01-27 19:19
Autor Wiadomość
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.
C/C++
#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.

P-157028
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.
P-157029
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.
P-157033
« 1 »
  Strona 1 z 1