Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [c++]operatore <<

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]operatore <<

    ciao.
    Ho questa esigenza:
    devo creare due tipi di formato che non sono altro che collezioni di float o int che vengono risolti piu' avanti nel progetto per diventare o

    1)Buffer VBO in opengl a partire da queste collezioni che sono vettorihelper per inserire i dati(funzioni del tipo: addPosition(float& fPos) o addNormal(float& fPos))

    2)file di testo xml in cui ho tutti questi float o int vengono trasformati in stringhe con una data formattazione e quindi scritti su file di testo.

    alla fine quello che cambia è la trasformazione collezioni->xml o collezioni->vbo , posso quindi instanziare due classi diverse (ma che derivano dalla stessa classe astratta)per gli oggetti che fanno la trasformazione e rendere unico l'inserimento dati nelle collezioni(insiemi di std::vector)
    e vorrei creare una classe che fa questo(inserimento) simile ad uno stream.

    E' possibile fare l'overload dell operatore << ?

    l'alternativa è utilizzare il metodo di inserimento del vertex buffer e creare in esso una funzione che trasforma il contenuto dei vector non in buffer opengl ma xml.
    ma preferivo separare i dati grezzi dalla classe vertex buffer , anche perchè di piu semplice serializzazione o manipolazione.

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Ni. Dipende da che prototipo vorresti per l'operatore. Ricorda che non è possibile ridefinire gli operatori tra due raw pointer, quindi almeno uno dei due dev'essere un'oggetto (o un reference all'oggetto di tipo: Base& b = Derived).
    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.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    io vorrei gestire solo float o int o oggetti CGeometricVector(di una classe vettore a 3 dimensioni di float).
    E' possibile fare piu' overload dell operatore , uno con :
    1)operator << (float& f)
    2)operator << (CGeometricVector& vect)
    ecc...
    e implementare all interno della funzione dell' operatore cio che voglio con una classe manipolatore che puo essere di famiglie diverse tipo:
    codice:
    operator << (CGeometricVector& vect)
    {
         pManipolator->manipulateVector(vect);//pManipulator puo esssere pManipulatorXml o pmanipulator opengl
    }
    scusa se dico eresie ma non ho ancora ben capito molte cose sul c++.

    ciao.

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Non so se possa funzionare (non ho mai indagato a fondo) però potebbe essere qualcosa del genere:
    codice:
    // operatore globale
    TypeManipulator* operator<<(
        TypeManipulator* pManipolator, 
        CGeometricVector& vect) {
    
        pManipolator->manipulateVector(vect);
        return pManipolator;
    }
    In questo modo puoi concatenare gli operatori.
    Eventualmente puoi anche fare un secondo overload per i reference.
    codice:
    // operatore globale
    TypeManipulator& operator<<(
        TypeManipulator& pManipolator, 
        CGeometricVector& vect) {
    
        pManipolator.manipulateVector(vect);
        return pManipolator;
    }
    Alla più diperata incaspuli il TypeManipulator in un apposito adapter per forzare l'invocazione dell'operatore.
    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.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.