Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
OPPO ha portato in Italia, dal 1° luglio 2026, Reno16 Pro: display AMOLED da 6,32 pollici a 144Hz, tripla fotocamera con sensore principale da 200 megapixel, chip Dimensity 8550 Super e batteria da 6000mAh, al prezzo di lancio di 899 euro. Lo abbiamo provato per due settimane insieme al nuovo accessorio Bubble, per capire se la formula compatta della serie regge ancora di fronte a un listino da 1099 euro
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
MiniLED di fascia media con local dimming a 192 zone, 144 Hz nativi e audio firmato Devialet. La prova strumentale riscontra colori affidabili e gaming reattivo, per un prodotto molto accessibile e convincente. Ma la soundbar aggiuntiva è quasi d'obbligo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-05-2004, 18:43   #1
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
[C++]Distruttori

Ciao raga, sto studiando i distruttori e non ho capito bene come usarli
I miei punti interrogativi sono:
1)Come li utilizzo??
2)Sono fondamentali??
3)Devo richiamarli in qualche modo??

Grazie in anticipo
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2004, 18:58   #2
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
1)Come li utilizzo??
class Prova
{
public:
Prova(); // costruttore
~Provs(); // distruttore
}
2)Sono fondamentali??
si se usi variabili dinamiche.
3)Devo richiamarli in qualche modo??
no
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2004, 20:05   #3
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
ok grazie.
Ma se non specifico il distruttore il compilatore le crea in auto?
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2004, 00:02   #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
Sì...ma non dealloca la memoria allocata dinamicamente dalla classe
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2004, 13:22   #5
leomagic
Senior Member
 
L'Avatar di leomagic
 
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
eh no,il distruttore viene richiamato solo quando l'oggetto perde la sua visibilità ma non vengono cancellate tutti i suoi successivi accomenti,ma solo i suoi attributi e metodi!
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13"

Concluso affari con: bottoni,skino,semmy83,alex_
leomagic è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2004, 14:11   #6
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
Raga ho finito la prima parte sulle classi e adesso il libro propone un esercizio:
Definire una classe tris che permette di giocare a tris

io per il momento volevo metterla così:

[code]

class tris
{
public: tris();
void vincita();
void scambio();
private: tavolo[3][3];
};

Ovviamente aggiugero i parametri da passare e magari qualche altra funzione
L'unica cosa che mi lascia un ? e la matrice, posso scrivere in quel modo oppure darà errore?

Ultima modifica di Gogeta ss4 : 27-05-2004 alle 14:37.
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2004, 14:38   #7
leomagic
Senior Member
 
L'Avatar di leomagic
 
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
X farti capire.
Alloco dinamicamente in una funzione la variabile intera A.
Quanto la funzione si richiama la variabile a viene allocata,alla chiusura della funzione lo spazio allocato per la variabile A viene reso libero e riutilizzabile.
spero di aver reso l'idea!
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13"

Concluso affari con: bottoni,skino,semmy83,alex_
leomagic è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2004, 14:42   #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
Gli devi dare un tipo a quella matrice...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2004, 14:51   #9
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
a cavolo vero
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2004, 21:46   #10
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
Codice:
tris::tris()
{
 //inizializza la matrice di trattini//
   tris::tavolo[3][3]={{'-','-','-'},{'-','-','-'},{'-','-','-'}};
}
E' il costruttore della classe tris.
Quando compilo mi dice che c'è un errore ti sintassi '{'

Non riesco a trovarlo
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2004, 14:07   #11
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
uppette
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2004, 14:15   #12
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 devi specificare tris:: davanti...ed inoltre il vettore non è inizializzabile in questo modo...ma devi farlo tramite 2 for...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2004, 14:49   #13
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
Ho fatto un programma e l'ho inizializzato in questo modo e funziona...
Come mai adesso non si può?
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2004, 15:00   #14
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
Perchè quella non è una inizializzazione
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2004, 16:19   #15
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
Non e che mi potresti aiutare?
Ho qualche problemino
Ti posto la definizione della classe e la definizione dei membri della classe

Codice:
#ifndef TRIS_H
#define TRIS_H
class tris
{
 public:  tris();
		  int vincita();
		  void scambio_gio1(int,int);
		  void printTavolo();
		  void scambio_gio2(int,int);
		  int controllo(int,int);
 private: char tavolo[3][3];
};

#endif
Codice:
Definizioni funzione membri

#include <iostream.h>
#include "classi.h"
#include <string.h>
#include <iomanip.h>

tris::tris()
{
 //inizializza la matrice di trattini
 int i,j;
 for(i=0;i<3;i++)
  {
   for(j=0;j<3;j++)
       tavolo[i][j] = '-';
  }
 for(i=0;i<3;i++)
  {
   cout << endl;
   for(j=0;j<3;j++)
      cout << tavolo[i][j];
   }
   cout << endl << endl;
}

int vincita()
{
//Controlla tutti casi possibili di vincita//
	if(tavolo[0][0]==tavolo[0][1]==tavolo[0][2])
      return 1;
	if(tavolo[1][0]==tavolo[1][1]==tavolo[1][2])
	  return 1;
	if(tavolo[2][0]==tavolo[2][1]==tavolo[2][2])
      return 1;
	if(tavolo[0][0]==tavolo[1][0]==tavolo[2][0])
	  return 1;
	if(tavolo[0][1]==tavolo[1][1]==tavolo[2][1])
	  return 1;
	if(tavolo[0][2]==tavolo[1][2]==tavolo[2][2])
	  return 1;
	if(tavolo[0][0]==tavolo[1][1]==tavolo[2][2])
	  return 1;
	if(tavolo[0][2]==tavolo[1][1]==tavolo[2][0])
	  return 1;
}

void printTavolo()
{
 int i,j;
 cout <<setw(35) <<"0" <<setw(4) <<"1" <<setw(4) <<"2";
 cout <<"\n" <<"\n";
 for(i=0;i<3;i++)
  {
   cout <<setw(32) <<i <<' ' <<' ';
   for(j=0;j<3;j++)
     cout <<tavolo[i][j] <<setw(4);


   cout<<endl;
  }
}

void scambio_gio1(int i,int j)
{
 strcpy(tavolo[i][j],"x");
}

void scambio_gio2(int i,int j)
{
 strcpy(tavolo[i][j], "o");
}

int controllo(int i,int j)
{
	int c;
	if(c=strcmp(tavolo[i][j], 'x')==0 || c=strcmp(tavolo[i][j], 'o')==0)
	 return 1;
	else
	 return 0;
}
Allora io ho letto dal libro che quando invoco una funzione membro automaticamente usa i membri della classe
Adesso nella funzione vincita mi da questi errori:

1)error C2065: 'tavolo' : undeclared identifier
2)Subscript requires array or pointer type( me lo ripete una ventina di volte.

Dove sbaglio??
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2004, 16:25   #16
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
Ho risolto!
Avevo dimenticato i risolutori di scope
Adesso mi da errori nella strcoy e nella strcmp
Non so se le ho usate correttamente
Mi da questi erori:

error C2664: 'strcpy' : cannot convert parameter 1 from 'char' to 'char *'
error C2664: 'strcmp' : cannot convert parameter 1 from 'char' to 'const char *'

Sinceramente non ho mai usato in una strmcp e in una strcpy un vettore o matrice
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2004, 16:28   #17
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
Codice:
#ifndef TRIS_H
#define TRIS_H
class tris
{
 public:
		  tris();
		  int vincita();
		  void scambio_gio1(int,int);
		  void printTavolo();
		  void scambio_gio2(int,int);
		  int controllo(int,int);
 private: 
		  char tavolo[3][3];
};

#endif
Codice:
Definizioni funzione membri

#include <iostream.h>
#include "classi.h"
#include <string.h>
#include <iomanip.h>

tris::tris()
{
 //inizializza la matrice di trattini
 int i,j;
 for(i=0;i<3;i++)
  {
   cout << endl;
   for(j=0;j<3;j++)
   {
       tavolo[i][j] = '-';
       cout << tavolo[i][j];
   }
  }
  cout << endl << endl;
}

int tris::vincita()
{

....
....
....

void tris::scambio_gio1(int i,int j)
{
   tavolo[i][j] = 'x';
}

void tris::scambio_gio2(int i,int j)
{
   tavolo[i][j] = 'o';
}

int tris::controllo(int i,int j)
{
	if(tavolo[i][j] == 'x' || tavolo[i][j] == 'o')
	 return 1;
	else
	 return 0;
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2004, 16:34   #18
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
Se ho capito bene, noon hai usato strcpy e strcmp perchè devo controllare un solo carattere e non una stringa intera giusto??
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2004, 16:53   #19
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
Sì...giusto...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2004, 17:12   #20
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
ok grazie mille
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
Gemini si integrerà con le auto e potrà ...
Addio a OxygenOS di OnePlus e alla Realm...
Intel conferma l'aumento dei prezzi su C...
In vendita Withings BodyFit, molto più d...
Inkterface: Steam Machine ospita un pann...
Stare seduti oltre 30 minuti di fila aum...
A Milano l'Italia ha firmato la sovranit...
Cos'è PeerTube, la piattaforma di...
In 12 articoli TOP c'è il meglio ...
La pirateria è l'unica tutela per...
Roomba Plus 516 Combo in offerta a 479€:...
ASUS ROG Strix G16 con RTX 5070 Ti super...
Google ammette il problema: la corsa all...
MOVA LiDAX Ultra 800 è un robot tagliaer...
iPhone 17 256GB oggi torna a soli 849€ s...
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: 13:52.


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