2009-11-24 9 views

Répondre

7

La même que la création d'un autre objet:

union MyUnion 
{ 
    unsigned char charValue[5]; 
    unsigned int intValue; 
}; 


MyUnion *myUnion = new MyUnion; 

Votre syndicat est maintenant sur le tas. Notez qu'une union est la taille de son plus grand membre de données.

0

Utilisez l'opérateur new.

0

Identique à une structure :) Vous pouvez utiliser malloc() et le faire en mode C, ou new pour la méthode C++. Le secret est que les structures, les unions et les classes sont liées; une structure est juste une classe (généralement) sans méthodes. Il y a plus de précision dans les commentaires suivants, si vous vous en souciez.

+0

Une structure en C++ peut avoir des méthodes. Une structure et une classe sont très similaires, sauf qu'une structure a des membres/fonctions publics par défaut alors qu'une classe a des membres privés par défaut. –

+1

Non, vous pouvez avoir des méthodes dans les structures. Vous pouvez même dériver des structures des classes et vice-versa. A propos de la seule différence entre struct et class est que l'accès par défaut pour une structure est public, alors qu'il est privé pour une classe. –

+0

En C++, une structure peut avoir des méthodes. La principale différence entre une structure et une classe est que l'accès par défaut pour une classe est privé alors que l'accès par défaut pour une structure est public. –

2

Mon C++ est un peu rouillé, mais:

my_union_type *my_union = new my_union_type; 
    ... 
    delete my_union; 
0

Je ne sais pas où vous voulez aller avec cela. Une union est un type de données ou de classe défini par l'utilisateur qui, à un moment donné, ne contient qu'un seul objet de sa liste de membres. Ainsi, à partir de cela, si vous avez un syndicat défini comme ceci:

union DataType 
{ 
    char ch; 
    integer i; 
    float f; 
    double d; 
}; 

Vous pouvez ensuite utiliser DataType comme un type pour définir les membres dans une classe ou un type pour définir des variables sur la pile, tout comme les types réguliers , struct ou classes que vous définissez.

0

Utilisez l'opérateur new:

#include <iostream> 

union u { 
    int a; 
    char b; 
    float c; 
}; 

class c { 
public: 
    c() { u1 = new u; u2 = new u; u3 = new u; } 
    ~c() { delete u1; delete u2; delete u3; } 
    u *u1; 
    u *u2; 
    u *u3; 
}; 

int main() 
{ 
    c *p = new c; 

    p->u1->a = 1; 
    p->u2->b = '0' + 2; 
    p->u3->c = 3.3; 

    std::cout << p->u1->a << '\n' 
      << p->u2->b << '\n' 
      << p->u3->c << std::endl; 

    delete c; 

    return 0; 
} 
Questions connexes