C++
Tipi senza nome
Ricerca…
Classi senza nome
A differenza di una classe o di una struttura denominate, le classi e le strutture senza nome devono essere istanziate dove sono definite e non possono avere costruttori o distruttori.
struct {
int foo;
double bar;
} foobar;
foobar.foo = 5;
foobar.bar = 4.0;
class {
int baz;
public:
int buzz;
void setBaz(int v) {
baz = v;
}
} barbar;
barbar.setBaz(15);
barbar.buzz = 2;
Membri anonimi
Essendo un'estensione non standard del C ++, i compilatori comuni consentono l'uso di classi come membri anonimi.
struct Example {
struct {
int inner_b;
};
int outer_b;
//The anonymous struct's members are accessed as if members of the parent struct
Example() : inner_b(2), outer_b(4) {
inner_b = outer_b + 2;
}
};
Example ex;
//The same holds true for external code referencing the struct
ex.inner_b -= ex.outer_b;
Come alias di tipo
I tipi di classe senza nome possono essere utilizzati anche durante la creazione di alias di tipo, ad esempio tramite typedef
e using
:
C ++ 11
using vec2d = struct {
float x;
float y;
};
typedef struct {
float x;
float y;
} vec2d;
vec2d pt;
pt.x = 4.f;
pt.y = 3.f;
Unione anonima
I nomi dei membri di un'unione anonima appartengono allo scopo della dichiarazione di unione e devono essere distinti da tutti gli altri nomi di questo ambito. L'esempio qui ha la stessa costruzione dei membri anonimi di esempio che usano "struct" ma è conforme allo standard.
struct Sample {
union {
int a;
int b;
};
int c;
};
int main()
{
Sample sa;
sa.a =3;
sa.b =4;
sa.c =5;
}
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow