Newsgroup: it.comp.lang.c++
Titolo: struct interne

Per realizzare il programma del mio post precedente, devo usare alcune 
struct e alcune costanti. Le costanti e i tipi struct li posso/devo 
definire all'interno della classe o all'esterno ma chiudendo il tutto in 
un namespace? Per le costanti uso un enum o #define? Grazie per l'aiuto.
-domanda stilistica: i nomi degli enumeratori vanno in maiuscolo?
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 un namespace? Per le costanti uso un enum o #define ? 
beh, intanto le enum supportano solo tipi integrali, quindi non 
fanno spesso al caso, per cui mi piacciono relativamente poco. 
Le define mi piacciono meno ancora in quanto non vengono mai 
viste dal compilatore (e non si ha controllo preciso sul loro 
tipo, qualora diverso dall'interpretazione di default con cui il 
literal espanso viene classificato).
Perché quindi non usare proprio la parola chiave const che serve 
a definire appunto costanti ?
ciao
Soviet_Mario


 definire appunto costanti ?
Le enum mi sembravano piu' adatte allo scopo perche' richiamano l'idea 
di un insieme finito di valori. Infatti quelle costanti sono i tipi di 
compressione di un'immagine bitmap, per cui mi sembrava piu' bello avere 
qualcosa come qui sotto invece di una serie di costanti separate.
class Bitmap{
...
enum compr{bi_rgb,
            bi_rle8,
            bi_rle4,
            bi_bitfields};
...
};
Per quanto riguarda i nomi? Vanno bene anche minuscoli o lo stile 
ricorrente e' come per le difine?
ps. Se non ti chiedo troppo, quando hai tempo per favore rispondi al mio 
post precedente. Lo so che e' abbastanza lungo ma a me serve solo una 
traccia, anche perche' senza non saprei come cominciare. Se mi puoi 
rispondere mi fai un favore :-)


 };
Beh, dal tuo post lungo mi sembrava tu volessi fare le cose in modo OO.
Tu ora hai Bitmap che contiene un campo di tipo compr che puo' essere
rle8 o rle4, etc...
Prima o poi, ti servira' leggere che tipo di compressione questa bitmap
ha e a seconda del tipo comportarti in modo diverso:
switch(compressionType)
{
    case bi_rle8:
        AddHiddenInfoToRLE_8();
        break;
    case bi_rle4:
        AddHiddenInfoToRLE_4();
        break;
......etc.....
sarebbe piu' OO avere Bitmap come classe base astratta in quanto la
funzione membro "AddHiddenInfo" e' virtuale e pura e poi avere BitmapRL8
ad esempio come derivata che implementa solo AddHiddenInfo secondo lo
stile di AddHiddenInfoToRLE_8.
In questo modo eviti la enum ed eviti lo switch, ed eviti anche 3
funzioni diverse da chiamare a seconda del valore dello switch. In
compenso ti trovi 3 diversi tipi di classi bitmap non astratti (e
potrebbe non essere appropriato al tuo design).
In tutte le cose ci sono i pro ed i contro. Vedi tu se ti puo' essere
utile inserire un gerarchia polimorfica.
Tommaso
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 post precedente. 
quel che sapevo l'ho detto. Sullo stile invece non mi esprimo 
(anche perché sono soltanto hobbistico e non professionista e 
quindi le mie convenzioni personali non sono particolarmente 
standard o consigliabili)
ciao
Soviet_Mario


Tommaso Galleri ha scritto:

Grazie del consiglio, ma il mio programma puo' funzionare solo con le 
bitmap rgb a 24 o 32 bit, in altre parole mi basta una sola classe. Il 
campo compressione lo devo leggere per vari altri motivi, ma non per 
scegliere cosa fare. Il tuo discorso pero' va bene per il fatto che 
vorrei in futuro aggiungere altri formati, quindi potrei fare una classe 
virtuale Image e avere Bitmap, Jpeg, Png ecc.. come derivate.


Soviet_Mario ha scritto:

Grazie lo stesso, mi hai dato un po' di idee per le costanti.
