Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Snapdragon Soung Gen 2 è la piattaforma Qualcomm per i dispositivi audio sempre più integrati nel mondo dell'intelligenza artificiale: al prorpio interno tanta potenza elaborativa per gestire al meglio le necessità d'uso dell'agentic AI
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
In occasione del proprio Snapdragon Summit Qualcomm annuncia i due nuovi chip per dispositivi mobile di fascia alta che entreranno nel mercato nel corso del 2027: tanta potenza a disposizione per elaborazioni di intelligenza artificiale sempre più complesse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-05-2008, 21:16   #1
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
[C++] [Boost] Scoped pointers e costruttori

Ciao a tutti!
Ho un problema prettamente stilistico per quanto riguarda gli scoped pointers delle librerie Boost.
Mettiamo il caso voglia allocare dinamicamente un oggetto e passare un parametro al suo costruttore.
Faccio in questo modo:

Codice:
Class* objectptr = new Class(arg1, arg2);
boost::scoped_ptr<Class> object_sptr(objectptr);
E' l'unico modo?
Ho dato un occhio alla documentazione ma non ho trovato niente che facesse al mio caso.
Grazie e ciao
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.
--Gerald Weinberg
Albi89 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2008, 21:50   #2
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
ovviamente puoi fare anche così:
Codice:
boost::scoped_ptr<Class> object_sptr(new Class(arg1, arg2));
ma in ogni caso ricordati sempre di controllare che l'operatore new non ti abbia restituito NULL, cosa che può succedere se sei a corto di memoria.

non conosco le Boost perché non ho mai avuto occasione di usarle, ne' saprei dove trovare la documentazione di questo scoped pointer; il codice che ho scritto è solo una naturale semplificazione del tuo codice
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2008, 22:46   #3
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
Quote:
Originariamente inviato da 71104 Guarda i messaggi
ovviamente puoi fare anche così:
Codice:
boost::scoped_ptr<Class> object_sptr(new Class(arg1, arg2));
ma in ogni caso ricordati sempre di controllare che l'operatore new non ti abbia restituito NULL, cosa che può succedere se sei a corto di memoria.

non conosco le Boost perché non ho mai avuto occasione di usarle, ne' saprei dove trovare la documentazione di questo scoped pointer; il codice che ho scritto è solo una naturale semplificazione del tuo codice

Ovviamente anche io la prima volta che mi sono trovato davanti uno scoped pointer ho fatto così, il problema è che... non funziona
A quanto ho visto permette la sintassi "abbreviata" permette di richiamare solo il costruttore a zero argomenti, e QUI non ho trovato niente che facesse al caso mio... possibile che non sia prevista una sintassi "concisa" come quella che mi hai proposto? (che è la sintassi naturale con cui mi sarei aspettato di poterlo utilizzare).
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.
--Gerald Weinberg
Albi89 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2008, 23:17   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
se funziona come hai scritto tu mi pare che debba per forza funzionare anche come ho scritto io... altrimenti prova così:
Codice:
boost::scoped_ptr<Class> object_sptr = new Class(arg1, arg2);
ma questo credo proprio che non dovrebbe compilare visto che il costruttore è dichiarato explicit.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2008, 00:16   #5
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
Quote:
Originariamente inviato da 71104 Guarda i messaggi
se funziona come hai scritto tu mi pare che debba per forza funzionare anche come ho scritto io... altrimenti prova così:
Codice:
boost::scoped_ptr<Class> object_sptr = new Class(arg1, arg2);
ma questo credo proprio che non dovrebbe compilare visto che il costruttore è dichiarato explicit.
Ok ho preso un granchio grande quanto una casa, ho riscritto una classe semplice semplice e mi ha accettato tranquillamente
Codice:
boost::scoped_ptr<Class> object_sptr(new Class(arg1, arg2));
Ovviamente l'assegnazione con l'uguale (che sarebbe stata comoda) non è permessa, ma è sufficiente rilasciare il puntatore e ridichiararlo.

Ora devo solo capire perchè nel programma in cui lo stavo usando non voleva funzionare
Thank you per l'aiuto (a quest'ora di sera non pensavo di trovarne)
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.
--Gerald Weinberg

Ultima modifica di Albi89 : 24-05-2008 alle 00:30.
Albi89 è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2008, 10:35   #6
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da 71104 Guarda i messaggi
ovviamente puoi fare anche così:
Codice:
boost::scoped_ptr<Class> object_sptr(new Class(arg1, arg2));
ma in ogni caso ricordati sempre di controllare che l'operatore new non ti abbia restituito NULL, cosa che può succedere se sei a corto di memoria.
A meno che uno non voglia farsi del male usando std::nothrow dovrebbe venire gettata un'eccezione, non ritornato 0.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Opera: la VPN gratuita si accende in aut...
Giochi capaci di costruirsi in tempo rea...
Giochi DX11 su Intel Arc e Proton: le ot...
Bentley Torcal ufficiale: 876cv e ricari...
Counter-Strike 2: con poche modifiche, V...
Silent Hill potrebbe tornare al cinema c...
L'integrazione di ChatGPT su Siri è stat...
ASML: 'Non vendiamo assolutamente nulla ...
Anthropic limita Claude Opus 5.5 nello s...
Microsoft 365, l'Antitrust respinge le p...
SAP NOW AI Tour Milan: una giornata con ...
Quake Champions dice addio al free-to-pl...
Anker AeroClip 2, li indossi e dopo un p...
Notebook ASUS da gaming per il Back to S...
Auto elettriche UE al 21,7%: sorpasso si...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 00:10.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v