Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703

    [c++] funzione con parametri opzionali

    Non so se sinceramente ci ho preso con il titolo, comunque:
    devo sviluppare una funzione che a seconda dei prametri che gli do si comporti in un modo piuttosto che un altro, mi spiego meglio:
    ex:

    codice:
    void prova(string x, string y)
    {
       //in questo punto dovrei porre una condizione se è presente il parametro x si comporta in un // modo, se è presente il parametro y in un altro 
    }
    è fattibile come cosa? O sono costretto a creare due funz. diverse?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Potrebbe essere

    codice:
    #include <string>
    
    using namespace std;
    
    void prova(string x, string y = "")
    {
    	cout << x << endl << y << endl;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	string a="ciao";
    	string b="bye";
    
    	prova(a);
    	prova(a, b);
    
    	return 0;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    mmm, non so se mi sono spiegato bene, riprovo, riscrivendo il codice in forma sintattica sbagliata ma per far capire il significato:

    void prova(Optional string x, Optional string y)
    {
    if(string x) x= x+".txt";
    else x=x+"R.txt"
    }

    capite?! in questo modo l'utente può usare la funzione in diversi casi...

    @edit: forse potrebbe andare, però non capisco una cosa..se io quando definisco il parametro nella funz. lo inzializzo anche, lo rendo opzionale? E sopratutto adottando il tuo esempio, se io devo fare delle operazioni sui paramtri devo per forza farle per "entrambi i casi", quindi tanto varrebbe fare due funzioni..

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Il che sarebbe meglio. il default parameter nelle funzioni è rindondante quando si possono effettuare overloading sui parametri. Il codice diventa più chiaro senza tanti bizantinismi.

    Comunque ricorda che il default parameter vale da destra a sinistra, quindi non puoi rendere opzionale x e obbligatorio y.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da cleaner
    se io devo fare delle operazioni sui paramtri devo per forza farle per "entrambi i casi"
    Cioe'? Non capisco ... fai un esempio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    @ shodan: mmm..quindi mi consigli di fare due funzioni e la risolvo in pratica..

    @oregon: nel senso che se siccome io poi non so se l'utente ha inserito il parametro x e y, dovendo concatenarci una stringa, dovrò farlo su entrambi, così come l'apertura del file ecc ecc..

  7. #7
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Stai cercando di emulare i parametri Optional del Visual Basic.
    In C++...puoi usare varie soluzioni...ad esempio un enum:

    codice:
    enum ParamsPassati
    {
        PARAM1 = 2;
        PARAM2 = 4;
    };
    
    int tuafunzione(string a, string b, ParamsPassati p)
    {
        if (p == PARAM1)
        {
            
        }
         
        if (p == PARAM2)
        {
           
        }
    }
    
    
    //Usa la funzione così
    
    int i = tuafunzione("ciao","quellochetipare",PARAM1);
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da cleaner
    @oregon: nel senso che se siccome io poi non so se l'utente ha inserito il parametro x e y, dovendo concatenarci una stringa, dovrò farlo su entrambi, così come l'apertura del file ecc ecc..
    Non e' un esempio ... fai un esempio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    @XWolverineX: mm, tu quale soluzione adotteresti? Questa con l'enum oppure scompongo le due funzioni? Tieni presente che sarebbero circa 8-9 righe di codice non di più..quale è la più giusta a livello di stile??

    @oregon: se io non mettessi la condizione if, dovrei comunque scrivere
    x= x+".txt";
    y=y+"#.txt";
    al momento dell'apertura del file...io come faccio sapere quale usare???
    fstream prova(x.c_str(),ios:ut) oppure y.c_str(),ios:ut
    è quello che intendo, se non utilizzo condizionali.

  10. #10
    Mmm vorresti fare una funzione che discerni due casi, in cui il grosso del codice è comune in entrambi i casi ad eccezione di poche righe.
    Ti conviene fare una funzione di questo tipo:

    Codice PHP:
    void prova(string parametro1int parametro2){
      switch (
    parametro2){
        case 
    1: ...
        case 
    2: ...
        case 
    3: ... 
      }
      
    parametro1 += ".txt";

    Non ha senso passare due oggetti string se ne usi uno, meglio un parametro di tipo da testare per differenziare i casi.
    ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.