Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-01-2006, 10:14   #1
Urizen
Member
 
L'Avatar di Urizen
 
Iscritto dal: Oct 2003
Città: <049/>
Messaggi: 125
[C++] >>> Problemi con distruttore template di classe

Codice:
template<class x, class y>
class A{
	private:
		class B;
		class C{
			public:				
				C(B*); 
			    C(const C&); 
				~C(); 
				C& operator=(const C&); 
				B& operator*() const; 
				B* operator->() const; 
				bool operator==(C) const; 
				bool operator!=(C) const; 
				B* puntatore; 
		};
		class B{ 
			public:
				B(x, C); 
				x info; 
				C next; 
				list<y>* v; 
				int rif; 
		};		
		C aux; 

	public:
		A();
		~A();
			
};

template <class x, class y>
A<x, y>::A::~A(){ ~aux();};

template <class x, class y>
A<x, y>::A::C::~C()
{if (puntatore)
	{puntatore->rif--;
	 if (puntatore->rif==0)
	    {delete puntatore;} // delete std di B che richiama ricorsivamente 
	}				        // il distruttore di C		
};

main(){

A<int, int> primo;

~primo();
}
il mio problema è il distruttore del template di classe A:
quando compilo, mi viene ritornato un errore per il seguente codice:
A<x, y>::A::~A(){ ~aux();};
dicendo:
error: no match for call to '(A<int,int>::C) ()'

in teoria il distruttore del template di classe A mi deve distruggere il suo unico
campo dati (aux) mediante l'istruzione ~aux() usando il distruttore per oggetti
di tipo C che ho definito ... quindi non dovrebbero esserci problemi ... invece ....

chi mi da qualche suggerimento ???
ringrazio in anticipo ...

Ultima modifica di Urizen : 02-01-2006 alle 10:19.
Urizen è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 11:31   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Urizen
~primo();
Non credo che se devi chiamare direttamente un distruttore, sia questa la sintassi corretta. In effetti è molto raro dover invocare un distruttore direttamente.

Nel tuo caso non devi richiamare esplicitamente alcun distruttore: "primo" viene distrutto quando perde scopo; aux viene distrutto automaticamente alla distruzione dell'oggetto che lo contiene.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 11:34   #3
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non si fanno mai chiamate esplicite al distruttore...se sei obbligato a farla hai un problema di design...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 11:38   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Comunque se vuoi chiamare il distruttore di aux la sintassi è questa: aux.~C()
Anche per primo la sintaasi dovrebbe essere questa: primo.~A();
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 11:55   #5
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da cionci
Comunque se vuoi chiamare il distruttore di aux la sintassi è questa: aux.~C()
Anche per primo la sintaasi dovrebbe essere questa: primo.~A();
Singolare comunque il messaggio di errore. Stesso errore se chiami l'oggetto come fosse una funzione (ad es. primo(); )
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 12:04   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da ilsensine
Singolare comunque il messaggio di errore. Stesso errore se chiami l'oggetto come fosse una funzione (ad es. primo(); )
Infatti lì probabilmente il compilatore ha capito che deve fare la negazione del valore ritornato da primo()
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 12:18   #7
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da cionci
Infatti lì probabilmente il compilatore ha capito che deve fare la negazione del valore ritornato da primo()
e primo() sarebbe...?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 12:23   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ho capito male quello che stavi dicendo.... Boh...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 12:26   #9
Urizen
Member
 
L'Avatar di Urizen
 
Iscritto dal: Oct 2003
Città: <049/>
Messaggi: 125
grazie raga per aver risposto ...
ora provo con i vostri suggerimenti ... poi vi dico come va ...
Urizen è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 12:53   #10
Urizen
Member
 
L'Avatar di Urizen
 
Iscritto dal: Oct 2003
Città: <049/>
Messaggi: 125
il codice sopra crea il seguente schema :

Codice:
aux
||
info1|next|*v|rif => v1,v2,v3,...,vn
||
info2|next|*v|rif => v1,v2,v3,...,vn
||
info3|next|*v|rif => v1,v2,v3,...,vn
||
...
praticamente la classe A crea un puntatore ad una lista di nodi,
dove ogni nodo ha un campo puntatore a list che punta ad una lista di valori ...

ora io vorrei rendere l'oggetto di tipo A vuoto ...
quindi mi creo un puntatore che punta al primo nodo(info1) ...
faccio puntare aux al successivo nodo(info2)...
cancello il puntatore che punta al primo nodo(info1) ...

Codice:
template <class k, class v>
void A<k, v>::A::clear()
{B* punt=aux.puntatore;
aux=aux->next;
delete punt;	
};
se faccio questo procedimento, il codice mi cancella il puntatore che punta al primo nodo(info1) ...
ma cambia i valori info a tutti i nodi rimanenti ... tutta colpa di delete punt: infatti, se lo tolgo, funzionerebbe
ma non come voglio io ...
Urizen è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 13:28   #11
Urizen
Member
 
L'Avatar di Urizen
 
Iscritto dal: Oct 2003
Città: <049/>
Messaggi: 125
grazie raga ...

risolto tutto ... ora funzia ...

il compilatore a volte fa ti testa sua ... compilo ... errore ... ri-compilo ... fa quello che dico io ...
Urizen è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Il Dipartimento della Guerra USA pensa a...
SpaceX ha lanciato le missioni Crew-13, ...
DJI Avata 2 in offerta Prime: drone FPV ...
Microsoft vuole far agire l'IA prima anc...
Ginga porta il monitoraggio delle perfor...
Tesla sorprende Wall Street: 486.532 con...
Cosa succede alle ossa degli astronauti ...
AgriEuro Premium Days: il 6 e 7 ottobre ...
259 euro per 2 TB di SSD PCIe 4.0 (Biwin...
GPT-6 Astra decifra dopo 217 anni una le...
Roborock Saros 20 Neo: pulisce al meglio...
Samsung Galaxy S27 Ultra, nuove conferme...
Offerte Prime Candy: lavatrice ProWash 3...
Tegola su Anthropic, gli agenti AI valgo...
E-bike in carbonio con un prezzo assurdo...
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: 23:03.


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