Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
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


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Apple rinvia due novità di iOS 27...
Una memoria ferroelettrica raggiunge 10 ...
Honor Magic 9, Pro Max e Super Edition: ...
24 offerte Amazon da non perdere, dalla ...
Apple starebbe progettando i propri cont...
Niente borsa per OpenAI prima del 2027: ...
Meta potrebbe aver mostrato in anticipo ...
Bicicletta elettrica L26 a 474,05€: e-bi...
NVIDIA RTX PRO 5500 Blackwell: 84 GB di ...
Sei alla ricerca di un buon gruppo di co...
Blizzard annuncia un nuovo StarCraft: la...
Ecobonus al 65%: il governo valuta il ri...
Biscotti fatti con bottiglie di plastica...
SIHOO B100 a 161€ e B100 Pro a 209€: sed...
ClickFix dilaga: un finto captcha e un c...
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: 11:31.


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