Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
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


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Brembo passa all'alluminio riciclato al ...
HONOR pronta a sfidare gli iPad Pro con ...
OpenAI esce allo scoperto: confermati i ...
In arrivo altri due prodotti da Apple en...
Il tool per aggiornare da Windows 10 a W...
Rishi Sunak entra in Microsoft e Anthrop...
Porsche in poche ore chiude la formazion...
iPhone 17 disponibili su Amazon al prezz...
La Ferrari Elettrica non è la cau...
Ricarica da record: Zeekr supera i 1.300...
Un 'capezzolo' con feedback aptico al po...
Porsche Taycan Rush a Misano: prima al v...
Installare Windows 11 senza account Micr...
Cina, nuove regole per le auto elettrich...
OPPO A6 Pro arriva in Italia a 299,99 eu...
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:18.


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