Orario: 21-05-2013, 8:41 Benvenuto ospite! (Log inRegistrati)


Rispondi 
Modelli x Try x Scelta Directory
Autore Messaggio
player931402
gg I won alone

Messaggi: 948
Registrato: Jul 2011
Offline Offline
#1 Modelli x Try x Scelta Directory
0
Scusate il titolo del topic stile Hunter x Hunter, vengo ai 3 quisiti!


--- Modelli ---

Leggendo un libro di C ho visto una riproduzione di una classe template<T> usando i void*

Effettivamente testando i due in c++ non sono riuscito a trovare differenze. ( Ho fatto una semplice classe dove leggevo dei valori ( Ho provato con int e float ) per poi immagazzinarli in un arrary )
Cercando online ho soltato trovato qualcosa come : " Use template is better then use void* "
Qualcuno sà cosa cambi effettivamente ?

--- Try Catch---

è possibile avere un file di inclusione dove si hanno tutti i "catch" e cosi in qualsiasi parte del programma dove si usa un try basta includere quel file ?


--- Scelta Directory ---

Sapreste indicarmi come è possibile ( Senza riscriversi tutto ) a far apparire una window secondaria dove cè la scelta della directory dove si vuole salvare un file o dove poter trovare il file desiderato ?

Matteo Galeotti
01-05-2012 17:45
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
hurricane86
Posting Freak

Messaggi: 1,266
Registrato: Jun 2009
Offline Offline
#2 RE: Modelli x Try x Scelta Directory
0
(01-05-2012 17:45)player931402 ha scritto:  ...

Modelli????

ti rispondo alla prima anche perchè le altre due sono incomprensibiliAsd

Le differenze ci sono eccome. La più importante è la type safety. Hai un vincolo a compile time che ti assicura di non commettere tutta una serie di errori. In più ci sono altre decine di differenze: solo per citarne alcune puoi usare il tipo templatato per accedere a membri statici o inner type (ie T::Foo, T::ms_bar)...puoi usera T come valore, pointer o reference e non sei quindi limitato a un void*...per non parlare della meta-programmazione, o delle policy-base class.... insomma "non ci azzeccano niente"

Martino Giovanelli
01-05-2012 19:09
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
encelo
Main(die)stream

Messaggi: 3,252
Registrato: Nov 2008
Offline Offline
#3 RE: Modelli x Try x Scelta Directory
0
(01-05-2012 19:09)hurricane86 ha scritto:  ti rispondo alla prima anche perchè le altre due sono incomprensibiliAsd
Forse la terza l'ho capita. Asd
Se intendi mostrare a schermo un file requester senza crearlo da zero puoi affidarti ad un GUI toolkit a tua scelta. Linguaccia

Angelo "Encelo" Theodorou
.: Blog | Twitter | LinkedIn | Ohloh | Last.FM | Vimeo | Steam :.
All problems in computer graphics can be solved with a matrix inversion. - James Blinn
01-05-2012 19:47
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Gabriele
Posting Freak

Messaggi: 4,373
Registrato: Oct 2010
Offline Offline
#4 RE: Modelli x Try x Scelta Directory
0
- modelli : vedi hurricane86
- Try Catch: al massimo l'emuli con i goto (non farlo).
- Scelta Directory : encelo

cmq tornando ai modelli, esempio che in C con puntatori a funzione che non saprei realizzare con eguale semplicità e sicurezza:

Codice:
template <typename T> static void argObject_nogc(lua_State *L,void *arg){
        Wapper::LuaWapper<T>::push(L,(T*)arg,false);
   }
questo mi permette di passare una funzione di casting generica a lei:
Codice:
#define ARG_OBJECT_NOGC(x,y) ((void (*)(lua_State *L,void *arg) ) &VMLua::argObject_nogc<x>),(void*)(y)
    //sintassi  " o d > i " --> VMLua::argObject<T>,*T,double, out : &int
    void GenericCallLuaFunction (const char *func, const char *sig, ...)
Codice:
vm->GenericCallLuaFunction ("scalare","o > i",ARG_OBJECT_NOGC(Vector2D,&v),&out);
con C come faccio?
Una funzione apposita ogni volta?

Gabriele Di Bari
Account G+
Account bitbucket
Account GITHUB
E ricordate: ((VMJava*)(NULL))->~VMJava();
(Questo messaggio è stato modificato l'ultima volta il: 01-05-2012 20:07 da Gabriele.)
01-05-2012 20:03
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
gso
Senior Member

Messaggi: 291
Registrato: Mar 2012
Offline Offline
#5 RE: Modelli x Try x Scelta Directory
0
Io rispondo alla seconda... Linguaccia

Proporrei le macro, se ho capito cos'hai in mente... Occhiolino

Codice:
using namespace std;
#include <iostream>

/////////////////////////////////////
// Spostabili in un header esterno //
#define catchalo()    catch(int e) { cout << "cxxxx scrivi??" << endl; }
#define omuori()    catch(int e) { cout << "allora vuoi morire..." << endl; int *m = 0x0; *m = 666; }
/////////////////////////////////////

class classe {

    public:
    int *muori;

    classe() { muori = 0x0; }

    void prova(void)
    {

        try {
            throw(1);
        }
        catchalo();

        try {
            throw(2);
        }
        catchalo();

        try {
            throw(3);
        }
        omuori();
    }
};


int main(int argc, char **argv)
{
    classe *cls = new classe();
    cls->prova();

    return 0;
}

Per il discorso dei template, calcola che se li usi ti tornerà utile quando vorrai serializzare i dati (ossia salvare il contenuto delle tue classi e trasferirli su disco o in rete).
01-05-2012 20:25
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Eclipse
npc in fps 4 food

Messaggi: 11,272
Registrato: Sep 2004
Offline Offline
#6 RE: Modelli x Try x Scelta Directory
0
- Usa i template, ma sei comunque sicuro che ti servono? tranne in casi particolari i template non servono molto spesso se fai una buona programmazione oop

- I try catch... evita di usarli direttamente

- per far apparire la finestra di dialogo di apertura o salvataggio di un file su windows ti basta usare le api di sistema: http://msdn.microsoft.com/en-us/library/...s.85).aspx

Giuseppe Navarria - Moonloop
[Immagine: twittericon.png] [Immagine: linkedinicon.png] [Immagine: steamicon.png]
01-05-2012 20:27
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
fatto
T_T

Messaggi: 990
Registrato: May 2009
Offline Offline
#7 RE: Modelli x Try x Scelta Directory
0
(01-05-2012 20:27)Eclipse ha scritto:  - Usa i template, ma sei comunque sicuro che ti servono? tranne in casi particolari i template non servono molto spesso se fai una buona programmazione oop

- I try catch... evita di usarli direttamente

- per far apparire la finestra di dialogo di apertura o salvataggio di un file su windows ti basta usare le api di sistema: http://msdn.microsoft.com/en-us/library/...s.85).aspx

why? Look come mai evitarli? Look
c'è che li decanta come fossero l'unico modo per programmare bene Fifi

Marco Fattorel ╯°□°)╯ ︵ ┻━┻
01-05-2012 20:33
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
player931402
gg I won alone

Messaggi: 948
Registrato: Jul 2011
Offline Offline
#8 RE: Modelli x Try x Scelta Directory
0
Grazie per le risposte alle 3, scusate se malposte, domande!

Cmq per la seconda ci ha preso gso.. Chiedevo se era possibile fare una cosa del genere cosi da poter avere un unico file con tutte le gestioni degli errori per avere una maneggiabilità migliore!


Grazie ancora!



EDIT: Non avevo visto l'ultimo post, Perchè evitare i Try-Catch direttamente? ( O meglio, cosa vuol dire ?! )

Matteo Galeotti
(Questo messaggio è stato modificato l'ultima volta il: 01-05-2012 20:40 da player931402.)
01-05-2012 20:38
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Eclipse
npc in fps 4 food

Messaggi: 11,272
Registrato: Sep 2004
Offline Offline
#9 RE: Modelli x Try x Scelta Directory
0
(01-05-2012 20:33)fatto ha scritto:  why? Look come mai evitarli? Look
c'è che li decanta come fossero l'unico modo per programmare bene Fifi

si beh non nei videogames, a parte che le eccezioni vanno proprio disabilitate dal progetto, visto che portano un overhead per ogni chiamata a funzione, ma poi se il tuo gioco crasha deve crashare vistosamente e segnalartelo, non salvarsi in calcio d'angolo.

Le eccezioni, almeno in C++, su java sono inevitabili, sono un modo per programmare male e mettere delle toppe al proprio software in caso di errori che non dovrebbero esserci in principio

link inerente:
http://stackoverflow.com/questions/94308...-a-project

Giuseppe Navarria - Moonloop
[Immagine: twittericon.png] [Immagine: linkedinicon.png] [Immagine: steamicon.png]
01-05-2012 23:39
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
_tommo_
Mod nerdcore

Messaggi: 5,884
Registrato: Nov 2008
Offline Offline
#10 RE: Modelli x Try x Scelta Directory
0
(01-05-2012 23:39)Eclipse ha scritto:  Le eccezioni, almeno in C++, su java sono inevitabili, sono un modo per programmare male e mettere delle toppe al proprio software in caso di errori che non dovrebbero esserci in principio

SET IN STONE

Le eccezioni sono un brain fart, e lo dice la parola stessa, dato che non possono davvero essere eccezioni.

I casi sono 2:
-un bug ha corrotto lo stato del programma in maniera imprevista: non deve succedere mai... ma dato che è imprevisto, di certo non puoi prevederlo con un'eccezione (ah l'ironia)

Es: se una funzione per design richiede un puntatore non NULL, è un errore includerci la logica (estranea al contesto) per controllare che sia effettivamente NULL e tentare di "risolvere" il problema o lanciare un'eccezione e sperare che qualcuno da qualche parte salvi la situazione: il NULL significa che un'altra sezione del programma è entrata in uno stato corrotto. Crashare e debuggare!
Vedi anche: Design by Contract.

-l'"eccezione" è qualcosa di perfettamente prevedibile (es: file richiesto dall'utente non trovato, pagina non trovata, etc) che pertanto deve essere incluso nel progetto della funzione in questione, e non delegato altrove.
L'idea che sia un "eccezione" è assolutamente arbitraria e anche mal definita nella semantica: perchè un file non trovato è "diverso" e causa un'eccezione? E' qualcosa che per quanto raro succederà.
Potrei addirittura fare una stima sbagliata e usare un'eccezione per il caso effettivamente più probabile. E' ancora un'eccezione, logicamente?

L'idea che un'eccezione possa essere programmata è un'idea idiota, e non a caso solo in Java (che ha avuto la sfortuna di nascere quando andavano per la maggiore) ti obbliga a usarle, che io sappia.

Tommaso Checchi
< devlog | twitter | Dojo, a C++ game framework >
(Questo messaggio è stato modificato l'ultima volta il: 02-05-2012 3:38 da _tommo_.)
02-05-2012 3:34
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
TheCrib
Indie Pellerossa

Messaggi: 5,176
Registrato: Sep 2010
Offline Offline
#11 RE: Modelli x Try x Scelta Directory
0
Peppperepeeeeeeeee ..arriva il paladino delle eccezioniiii !!!

Tommo.. mettici un bel IMO grosso quanto una casa pero'.
Un conto e' odiare le eccezioni un altro e' andare in giro a dire che non andrebbero usate.

Le eccezioni esistono per una ragione. E se vuoi creare del software solido con un controllo degli errori degno di questo nome, ti assicuro che senza eccezioni di viene una papagna di codice infinito.
Con un numero spopositato di nestings, oppure con tante belle goto o con setjmp/longjmp

E' vero che molto spesso i videogiochi hanno poco contenuto dinamico e che l'ambiente di run-time e' meglio definito. Ma nel software in generale e' molto comune che ci siano degli errori di run-time, e se si deve avere una buona gestione degli errori, allora le eccezioni sono una salvata.

In oltre in C++, senza eccezioni devi necessariamente perire nel caso di potenziali errori nel costruttore, oppure creare dei costruttori "dumb" ed avere una Init() da chiamare separatamente.
Senza contare che non so proprio come faresti a capire se una semplice new ha fallito.
Ma il tuo discorso forse e' che la new non deve fallire.. che fila... in un comodo ambiente deterministico 8)

ole'

Davide Pasca
http://v5.kazzuya.com - @109mae
http://oyatsukai.com - @oyatsukai
"O frechete !" - M.Magnotta
(Questo messaggio è stato modificato l'ultima volta il: 02-05-2012 11:28 da CiroContinisio.)
02-05-2012 7:55
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
MannyB
Posting Freak

Messaggi: 1,533
Registrato: Mar 2011
Offline Offline
#12 RE: Modelli x Try x Scelta Directory
0
(01-05-2012 17:45)player931402 ha scritto:  --- Scelta Directory ---

Sapreste indicarmi come è possibile ( Senza riscriversi tutto ) a far apparire una window secondaria dove cè la scelta della directory dove si vuole salvare un file o dove poter trovare il file desiderato ?


se vuoi versare lacrime di sangue vai di win32. GetOpenFilename() is your friend:

http://www.daniweb.com/software-developm...filedialog

oppure usi un GUI toolkit come ti e' stato suggerito

Manuele Bonanno Fermofumo
02-05-2012 9:45
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
dany_dev
Posting Freak

Messaggi: 3,984
Registrato: Sep 2010
Offline Offline
#13 RE: Modelli x Try x Scelta Directory
0
(02-05-2012 7:55)TheCrib ha scritto:  Peppperepeeeeeeeee ..arriva il padadino delle eccezioniiii !!!

Tommo.. mettici un bel IMO grosso quanto una casa pero'.
Un conto e' odiare le eccezioni un altro e' andare in giro a dire che non andrebbero usate.

Le eccezioni esistono per una ragione. E se vuoi creare del software solido con un controllo degli errori degno di questo nome, ti assicuro che senza eccezioni di viene una papagna di codice infinito.
Con un numero spopositato di nestings, oppure con tante belle goto o con setjmp/longjmp

E' vero che molto spesso i videogiochi hanno poco contenuto dinamico e che l'ambiente di run-time e' meglio definito. Ma nel software in generale e' molto comune che ci siano degli errori di run-time, e se si deve avere una buona gestione degli errori, allora le eccezioni sono una salvata.

In oltre in C++, senza eccezioni devi necessariamente perire nel caso di potenziali errori nel costruttore, oppure creare dei costruttori "dumb" ed avere una Init() da chiamare separatamente.
Senza contare che non so proprio come faresti a capire se una semplice new ha fallito.
Ma il tuo discorso forse e' che la new non deve fallire.. che fila... in un comodo ambiente deterministico 8)

ole'

tanto per capire, una new perchè dovrebbe fallire (intendo se usata correttamente), e se fallisce e lo trovi con l'eccezione, che fai? riprovi? XD
(Questo messaggio è stato modificato l'ultima volta il: 02-05-2012 10:36 da dany_dev.)
02-05-2012 10:35
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
_tommo_
Mod nerdcore

Messaggi: 5,884
Registrato: Nov 2008
Offline Offline
#14 RE: Modelli x Try x Scelta Directory
0
Boh mai visto una new che fallisce nella mia vita Asd
Tutti i sistemi PC hanno "memoria infinita" tramite lo swapping su disco, l'unico ambiente su cui potrebbe succedere a causa dei limiti di memoria è iOS, e tanto anche lì il programma viene terminato molto prima. Al massimo su console?

Avrei dovuto metterci un IMO in effetti, ma era comunque sottointeso - alla fine sto dando contro agli sviluppatori di Java, quindi almeno qualcuno che la pensa in maniera diametralmente opposta esiste Sorriso

Però boh, il giorno che mi serviranno le userò Asd

Tommaso Checchi
< devlog | twitter | Dojo, a C++ game framework >
02-05-2012 11:25
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
gso
Senior Member

Messaggi: 291
Registrato: Mar 2012
Offline Offline
#15 RE: Modelli x Try x Scelta Directory
0
Vorrei spezzare un grissino in favore di tommo... l'eccezione non è che sia inutile ma i m v h o è sempre stato un esquamotage per liberarsi di scrivere codice di controllo, che invece ha importanza "maggiore" (imho) del resto del codice.

Per esempio, in C++ schietto, se tento in un blocco try di fare "*pnullo = 0;" la catch() non parte e avviene un errore di segmentazione lo stesso (poi logicamente ci saranno framework in grado di gestire il problema anche con le setjmp()).

Anche questo è uno dei motivi per cui il C rimane il mio linguaggio preferito. Non puoi barare e non puoi "sbrigarti" a risolvere un problema con sistemi generici. Devi necessariamente pensare a tutte le implicazioni che ci saranno anche nei punti più subdoli.

Comunque usare o non usare i blocchi try (sorvolando che in certi linguaggi sono obbligatori) è anche uno stile di vita Sorriso
02-05-2012 11:37
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Rispondi 


Vai al forum: