Zoeken…


Naamloze klassen

In tegenstelling tot een benoemde klasse of struct, moeten niet-benoemde klassen en structs worden geïnstantieerd waar ze zijn gedefinieerd en kunnen geen constructors of destructors hebben.

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;

Anonieme leden

Als een niet-standaard uitbreiding van C ++, maken gemeenschappelijke compilers het gebruik van klassen als anonieme leden mogelijk.

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;

Als een type alias

Naamloze klassen kunnen ook worden gebruikt bij het maken van lettertypen, bijvoorbeeld via typedef en het 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;

Anonieme Unie

Ledennamen van een anonieme vakbond behoren tot het toepassingsgebied van de vakbondsverklaring en moeten verschillen van alle andere namen van dit toepassingsgebied. Het voorbeeld hier heeft dezelfde constructie als voorbeeld Anonieme leden die "struct" gebruiken, maar is standaard conform.

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow