Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-07-2010, 15:45   #1
Re_Kotc
Senior Member
 
L'Avatar di Re_Kotc
 
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
[C++] problemino puntatori

ciao a tutti, sto cercando di passare un puntatore ad un array tramite una funzione in C++..ma sbaglio qualcosa perchè non funziona..

ho creato una classe diciamo A che contiene un array di oggetti di questo tipo:

Codice:
Bumpcar *cars[6];
ho bisogno poi di creare una funzione che mi restituisca il puntatore all'array:

Codice:
Bumpcar* GameListener::getCars(){




	return cars	;
}
a questo punto un'altra classe B deve poter utilizzare questo metodo per ottenere le cars, allora in questa seconda classe ho un oggetto:

Codice:
Bumpcar* bc[6];
e cerco di ottenere le cars così:

Codice:
bc = oggettoclasseA->getCars();
ma mi restuisce l'errore:

error C2440: '=': impossibile convertire da 'Bumpcar *' a 'Bumpcar *[6]'

so che è un problema di come ho dichiarato le variabili..ma non riesco a trovare una soluzione...grazie
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0
Re_Kotc è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2010, 16:02   #2
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
Non puoi farlo perché un array introduce un puntatore costante, dunque non è possibile modificare l'indirizzo a cui punta (cosa che stai cercando di fare).

Una possibile soluzione è dichiarare bc come Bumpcar**, ma anche il tipo di ritorno di getCars() mi sembra sbagliato: dovrebbe essere anche lui Bumcpar**.
__________________
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 12-07-2010, 16:10   #3
Re_Kotc
Senior Member
 
L'Avatar di Re_Kotc
 
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
ti ringrazio della risposta ma ancora non funziona:
Codice:
 error C2440: 'return': impossibile convertire da 'Bumpcar *[6]' a 'Bumpcar *
cioè nella funzione getCars() non può ritornare il Bumpcar *[6] che mi serve..
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0
Re_Kotc è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2010, 16:11   #4
Re_Kotc
Senior Member
 
L'Avatar di Re_Kotc
 
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
che stupido non ho letto la seconda parte del tuo messaggio! ora provo a modificare tutto..
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0
Re_Kotc è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2010, 16:18   #5
Re_Kotc
Senior Member
 
L'Avatar di Re_Kotc
 
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
allora modificando il codice così:

Codice:
Bumpcar **cars[6];
nella classe A

e

Codice:
Bumpcar **bc[6];
nella classe B

e l'errore sulla funzione è sparito, però quando cerco di utilizzarla per farmi restituire le cars in questo modo:

Codice:
bc = oggettoclasseA->getCars();
l'errore è:

Codice:
error C2440: '=': impossibile convertire da 'Bumpcar *' a 'Bumpcar **[6]'
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0
Re_Kotc è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2010, 17:30   #6
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Umh... ma tu vuoi un array di Bumpcar o un array di puntatori a Bumpcar?
Sei sicuro di non volere semplicemente un bel
Codice:
std::vector<Bumpcar> cars
??
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2010, 18:09   #7
Re_Kotc
Senior Member
 
L'Avatar di Re_Kotc
 
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
XD allora..per dirla grezzamente, ho bisogno che la classe B possa accedere ai bumpcar definiti nella classe A, perciò ogni metodo concepibile va bene :P..solo che mancando d'esperienza sono andato un pò a tentativi.
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0
Re_Kotc è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2010, 18:47   #8
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
L'errore è il
Codice:
Bumpcar **bc[6];
nella classe B, che dovrebbe essere un semplice
Codice:
Bumpcar** bc;
cioè un puntatore ad un puntatore a Bumpcar (tipo compatibile con un array di puntatori a Bumpcar) e non costante (in modo da permettere l'assegnazione "di ritorno" dal metodo getCars).
Nella classe A devi mantenere il
Codice:
Bumpcar* cars[6];
mentre a cambiare deve essere il metodo getCars
Codice:
Bumpcar** getCars() const { return cars; }
Occhio insomma ai tipi e al "significato" della notazione [N], che riserva spazio proporzionalmente a N e introduce un puntatore costante: volendo anche ignorare la "constness", nel tuo codice c'è un mismatch tra i tipi perché fai ritornare un Bumpcar** (cars) da una funzione che indica come tipo di ritorno un Bumpcar*!

Ovviamente mi accodo a tutte le considerazioni del caso: a meno che non sia un progetto didattico per scuola/università (con vincoli imposti dal prof.), è il caso di utilizzare il container vector nel proprio codice C++ per renderlo non solo più "error-proof", ma più semplice da correggere.
Tra l'altro, col tuo codice B potrà modificare il contenuto di A direttamente agendo sul puntatore che riceve, che gli garantisce l'accesso diretto all'array: un std::vector invece può essere copiato facilmente.
__________________
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 : 12-07-2010 alle 18:57. Motivo: Ho aggiunto qualche dettaglio ;)
Albi89 è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2010, 20:58   #9
Re_Kotc
Senior Member
 
L'Avatar di Re_Kotc
 
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
hai ragione avevo fatto confusione con i puntatori, nella B devo dichiarare Bumpcar** bc; quindi un puntatore al puntatore del primo elemento dell'array...però visto che ci siamo, se volessi usare un vector?
grazie mille
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0
Re_Kotc è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2010, 21:44   #10
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
Quote:
Originariamente inviato da Re_Kotc Guarda i messaggi
hai ragione avevo fatto confusione con i puntatori, nella B devo dichiarare Bumpcar** bc; quindi un puntatore al puntatore del primo elemento dell'array...però visto che ci siamo, se volessi usare un vector?
grazie mille
Non c'è molto da dire al proposito... in classe A e B dovresti avere un
Codice:
std::vector<Bumpcar> cars;
e la funzione in A potrebbe essere qualcosa del tipo
Codice:
std::vector<Bumpcar> getCars() const { return cars; }
Ci sono ovviamente una serie di questioni da considerare... questa strategia provoca la copia di tutto il vector, e conseguentemente di ogni oggetto Bumpcar, ad ogni chiamata di getCars(), e non ti permette di modifica da B il contenuto di A (cosa che, a stretto rigore, dovrebbe essere vera sempre, ma potrebbe non essere quello che volevi fare nel tuo programma).
Nulla ti vieta, in questo caso, di utilizzare un vector di puntatori.
__________________
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 12-07-2010, 21:47   #11
Re_Kotc
Senior Member
 
L'Avatar di Re_Kotc
 
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
ti ringrazio moltissimo della disponibilità! adesso adatto il mio codice con i suggerimenti che mi hai dato, thanks!
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0
Re_Kotc è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Toyota usa giochi e premi per spingere i...
HarmonyOS ha raggiunto la soglia di sopr...
Le offerte Amazon più convenienti...
Un gruppo di ladri ha usato Google Maps ...
Apple non si fida di Samsung per la real...
Windows 11: un nuovo driver nativo mette...
Vi hanno regalato buoni Amazon? Intanto ...
Via acari, polvere e sporco da materassi...
Cuffie Beats in super offerta su Amazon,...
Xbox Cloud Gaming arriva su Amazon Fire ...
Un blackout a San Francisco manda in til...
Windows 11 è diventato più...
Apple cambia strategia a causa della cri...
007 First Light: uscita rimandata di due...
Samsung Galaxy A37 e A57: il comparto fo...
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: 17:16.


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