Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.339 pregleda

Najnovija ↓

Strukture u unijama 06.08.2010. u 14:17 · pre 197 meseci #1
Već dosta godina koristim C++ i znam da je sledeća konstrukcija

Code:
 struct A {
    ...
};

union B {
    struct A a;
    ....
};


moguća u C-u, ali ne i u jeziku C++ zato što strukture mogu imati konstruktore i destruktor, pa se ne zna pri npr konstrukciji, konstruktor od kog atributa unije pozvati.

Ako je već tako, postoji li neka zamena za takvu situaciju, a da atributi unije ne budu pokazivači na strukture? Ja ne znam neko elegantno rešenje.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Strukture u unijama 06.08.2010. u 16:25 · pre 197 meseci #2
Ovo radi (g++ 4.3.3, vc++ 2008):


Code:

#include <iostream>
using namespace std;

struct A{
    int i;
};

union B{
    A a;
    float f;

};

int main(int argc, char* argv[])
{
    B b;
    b.a.i = 4;
    cout << b.a.i << endl;

    return 0;
}


Naravno, ne smeš definisati nikakav konstruktor ili destruktor unutar strukture.
Re: Strukture u unijama 06.08.2010. u 17:23 · pre 197 meseci #3
Da dodam samo: pošto je u C++-u dozvoljeno da unija ima konstruktor, samo izbaci konstruktore iz struktura i dodaj bilo kakvu init metodu...

Code:

#include <iostream>
using namespace std;

struct A
{
    void Init()
    {
        _a = 1.0;
    }

    float _a;
};

struct B
{
    void Init()
    {
        _b = 1.0;
    }

    float _b;
};

union X
{
    X()
    {
        a.Init();
        b.Init();
    }

    A a;
    B b;
    float c;
};

int main()
{
    X n;

    n.a._a = 2.0;
    n.b._b = 2.0;
    n.c = 3.0;

    cout << n.a._a << endl;

    return(0);
}

Re: Strukture u unijama 06.08.2010. u 17:45 · pre 197 meseci #4
Hvala obojici. To sam tražio.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme