Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    La vedo dura estrapolare cose da Boost, per via degli include custom che usa.
    Comunque se cerchi smart_ptr su Google qualche buona implementazione non standard la trovi.
    (Non standard intendo l'interfaccia)
    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.

  2. #12
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    intanto grazie.
    Ho trovato una libreria di smart pointers.
    non sono riuscito a capire pero come assegnare un indirizzo di una variabile puntatore esistente ad uno smart pointer , è possibile?
    1)dopo che ho assegnato l' indirizzo della variabile allo smart pointer vengono liberate le risorse puntate da quell'indirizzo automaticamente?
    2)avevo una funzione del tipo: void classe::SetData(cbase** pBase) , come faccio ad utilizzare gli smart pointer in questo caso?

    ciao

  3. #13
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    ad es ho il seguente problema:
    codice:
    smart_ptr<CBaseIfc> pElement;
    	if(localName.compare(L"IfcWallStandardCase")==0)
    		smart_ptr<CWallStandardCaseIfc> pElement(new CWallStandardCaseIfc);
    	if(localName.compare(L"IfcSlab")==0)
    		smart_ptr<CSlabIfc> pElement(new CSlabIfc());
    vorrei dichiarare pElement una sola volta come tipo base CBaseIfc(classe da cui derivano tutte le altre sotto)in cima e assegnargli una delle istanze a seconda del contenuto di localname.
    ma per fare questo devo poter assegnare un indirizzo a pElement senza ridichiararlo.
    mi serve per implementare il polimorfismo sulle classi derivate.
    e se provo a fare:
    codice:
    pElement = smart_ptr<CRelContainedInSpatialStructure>(new CRelContainedInSpatialStructure);
    mi da un errore sulla concersione dei tipi
    e possibile?
    grazie.

  4. #14
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Ho trovato una libreria di smart pointers.
    Hai il link?
    In ogni caso mi sono ricordato che tempo fa avevo fatto una riduzione degli shared_ptr di Boost per un compilatore non supportato più. E' un header unico con la stessa interfaccia di Boost ma iniettato nel namespace std.
    Se ti interessa lo trovi qui:
    www.flaviomoretto.it/cpp/shared_ptr.hpp
    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. #15
    Originariamente inviato da giuseppe500
    perchè utilizziamo sourcesafe e ci lavoriamo in 5 e tutti dovrebbero installarsi boost , e questo non è purtroppo possibile.
    Tieni comunque conto che l'installer di boost può installare anche solo i pezzi che ti servono (nello specifico gli smart pointer), per cui sarebbe un'installazione estremamente leggera. D'altra parte un'installazione completa delle boost potrebbe fornirvi strumenti estremamente comodi che vi permetterebbero di risparmiare tempo in diversi task comuni (personalmente, ad esempio, trovo i cast boost di una comodità estrema).
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #16
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    grazie shodan , vorrei utilizzare il tuo smart pointer solo che non riesco a compilarlo con il vs 2003.
    Penso sia un problema di namespaces , ti posto gli errori:
    c:\IFC\SAX\sax15122009\shared_ptr.hpp(255): error C2027: use of undefined type 'NX::wk_counter'
    c:\IFC\SAX\sax15122009\shared_ptr.hpp(250) : see declaration of 'NX::wk_counter'
    c:\IFC\SAX\sax15122009\shared_ptr.hpp(182): error C2039: 'sp' : is not a member of 'NX::detail::sh_counter'
    c:\IFC\SAX\sax15122009\shared_ptr.hpp(134) : see declaration of 'NX::detail::sh_counter'

    inoltre:
    ho visto che usi l'auto_ptr , che ho letto non essere compatibile con i container stl, la tua libreria è compatibile con i container stl?
    grazie.

  7. #17
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Errore mio. La riga:
    codice:
    #define std NX
    va cambiata in
    codice:
    #define NX std
    Purtroppo faccio sempre confusione tra i #define e i typedef che hanno sintassi invertita.
    Per il resto dovrebbe compilare senza problemi.

    tua libreria
    non esageriamo: è una palese scopiazzatura che mi serviva per una specifica esigenza, altrimenti avrei usato direttamente boost.

    Comunque lo shared_ptr deve essere compatibile con la STL, sennò che l'hanno messo a fare?

    Ricorda comunque che questo è solo un surrogato, da cambiare con boost::shared_ptr (se presente - lo so che non ce l'hai o che per adesso non la usi, ma se cambiassi idea... ) o meglio con std::tr1::shared_ptr (quando disponibile - nei più recenti compilatori insomma - e ragione per cui inietto il tutto nel namespace std).

    Per quanto riguarda l'auto_ptr.
    Lo uso solo per acquisirlo. Una volta acquisito, l'ownership del puntatore sotto stante passa allo shared_ptr con tutto quello che ne consegue.
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.