Go geek!

Our Victory Is Imminent

Archiwum kategorii ‘D

[D] Struktury w D

Skomentuj »

W języku C++ różnica pomiędzy klasą i strukturą sprowadza się w zasadzie do domyślnego kwalifikatora dostępu do składowych. W języku D różnica jest jednak głębsza

W D

  • struktury są typami wartości (value type) podczas gdy klasy są typami referencyjnymi (reference type).
  • brak dziedziczenia i interfejsów
  • pamięc domyślnie alokowana na stosie

struct ColorT( T ) {
	T r;
	T g;
	T b;
	T a;
};

alias ColorT!(int) Color;

struct Material {
	Color ambient;
	Color diffuse;
	Color specular;
};

Inicjalizacja struktur

Statyczna

static Material material = {
     ambient  : {255,0,0,255} ,
     diffuse   : {0,255,0,255},
     specular : {255,0,0,255}
};

Dynamiczna

Polega na użyciu istniejącego egzemplarza typu

Material material;
m.diffuse   = { r:255, g:127, b:10, a:255};
m.specular  = { r:127, g:127, b:0,  a:255};
m.ambient   = { r:255, g:255, b:0,  a:255};

Material material2 = material;

Przeciążony operator opCall

struct Material {
...
static Material opCall(Color amb, Color diff, Color spec) {
     Material m ;
     m.ambient = amb;
     m.specular= spec;
     m.diffuse  = diff;
     return m;
}
...
}

Material material = Material(ambientColor, diffuseColor, specularColor);

Structs & Unions

Written by Jarek Przygódzki

Maj 20, 2009 at 9:33 am

Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.