Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Questo mouse ultraleggero, con soli 36 grammi di peso, è stato concepito per offrire un'esperienza di gioco di alto livello ai professionisti degli FPS, grazie al polling rate a 8.000 Hz e a un sensore ottico da 33.000 DPI. La recensione esplora ogni dettaglio di questo dispositivo di gioco, dalla sua agilità estrema alle specifiche tecniche che lo pongono un passo avanti
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni
Dal richiamo di Enrico Letta alla necessità di completare il mercato unico entro il 2028 alla visione di Nokia sul ruolo dell’IA e delle reti intelligenti, il Nokia Innovation Day 2025 ha intrecciato geopolitica e tecnologia, mostrando a Vimercate come la ricerca italiana contribuisca alle sfide globali delle telecomunicazioni
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
OPPO Reno14 F 5G si propone come smartphone di fascia media con caratteristiche equilibrate. Il device monta processore Qualcomm Snapdragon 6 Gen 1, display AMOLED da 6,57 pollici a 120Hz, tripla fotocamera posteriore con sensore principale da 50MP e generosa batteria da 6000mAh con ricarica rapida a 45W. Si posiziona come alternativa accessibile nella gamma Reno14, proponendo un design curato e tutto quello che serve per un uso senza troppe preoccupazioni.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-07-2007, 21:42   #1
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
[Java - C++] qualche consiglio con un esempio

Un saluto a tutti!

Ho da poco ripreso a programmare ad oggetti.
Come linguaggio di programmazione ho utilizzato sempre il java, però mi affascina, in quanto più comune e quindi più utilizzato, il C++.

Per iniziare avevo pensato di basarmi su un progetto java e riga per riga convertirlo in C++.
La prima difficoltà incontrata è l'allocazione di un nuovo oggetto all'interno di una classe.

Per esempio..

Codice:
import java.io.*;
import java.awt.*;

class ProgConv {

    public static void main (String args[]) {
	
	ConvForm p = new ConvForm();
	
	p.setVisible(true);
	p.setResizable(true);
	p.setSize(400,400);

    }
}
Dato questo codice in java, l'allocazione di un nuovo oggetto come si fa in C++?
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 00:27   #2
mapomapo
Senior Member
 
L'Avatar di mapomapo
 
Iscritto dal: May 2005
Città: Bari
Messaggi: 349
l'allocazione dinamica in c++ funziona con l'operatore new....la deallocazione con l'operatore delete....la cosa dovrebbe essere molto simile....

esempio:

int *v;

v = new int;

v = 2;

delete v;


Vito
__________________
Si può vincere una guerra in due...o forse anche da solo. Si può estrarre il cuore anche al più nero assassino, ma è più difficile cambiare un'idea!
mapomapo è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 01:18   #3
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da nico88desmo Guarda i messaggi
Come linguaggio di programmazione ho utilizzato sempre il java, però mi affascina, in quanto più comune e quindi più utilizzato, il C++.
sia Java che C++ sono molto diffusi, ma potendo scegliere direi che è masochistico scegliere C++: Java è più facile e quindi più produttivo, ed è veramente molto difficile che tu abbia un irrinunciabile bisogno delle features che il C++ ha e Java no.

Quote:
Dato questo codice in java, l'allocazione di un nuovo oggetto come si fa in C++?
è identica: si usa l'operatore new, solo che a differenza di Java in C++ devi anche sbatterti coi puntatori: la variabile che tiene il... "riferimento all'oggetto", deve essere dichiarata come puntatore alla classe, e per dichiarare un puntatore devi precedere il nome della variabile con un asterisco. dopodiché non è finita: il C++ non ha il garbage collector, quindi la memoria allocata con new te la devi liberare a mano, e se te ne scordi è un problema. esempio:

Codice:
class Lol {
	.
	.
	.
};

.
.
.

Lol *asd = new Lol();

// uso l'oggetto
// ...

delete asd;
i pochi cambiamenti che il passaggio a C++ introduce da Java sono tutti molto poco intuitivi. è raro trovare un senso a tale passaggio.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 01:21   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da mapomapo Guarda i messaggi
l'allocazione dinamica in c++ funziona con l'operatore new....la deallocazione con l'operatore delete....la cosa dovrebbe essere molto simile....
con quell'esempio (tra l'altro errato) non lo aiuti: in Java non è possibile allocare dinamicamente un solo int, semmai un vettore costituito da un solo int. ed inoltre Java ha un comodissimo garbage collector, percui niente delete
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 09:42   #5
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
Ringrazio per le risposte tempestive

Quote:
Originariamente inviato da 71104 Guarda i messaggi
sia Java che C++ sono molto diffusi, ma potendo scegliere direi che è masochistico scegliere C++: Java è più facile e quindi più produttivo, ed è veramente molto difficile che tu abbia un irrinunciabile bisogno delle features che il C++ ha e Java no.
Questo lo so, infatti è anche per questo che a scuola abbiamo imparato il java. Però, siccome tutti parlano di questo C++, allora vorrei trarne delle conclusioni io a riguardo di questo linguaggio, e per questo motivo ho deciso di impararlo.

Ho provato con questo codice
Codice:
#pragma once

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
//#include "h1.h"

namespace prova_1 {

	public ref class Form2 : public System::Windows::Forms::Form {
	
	h1 *p = new h1();

	public:

		
		Form2(void) {
			InitializeComponent();
			
			//
			//TODO: aggiungere qui il codice del costruttore.
			//
		}
però mi dà errore nell'allocazione di p
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 11:40   #6
mapomapo
Senior Member
 
L'Avatar di mapomapo
 
Iscritto dal: May 2005
Città: Bari
Messaggi: 349
Quote:
Originariamente inviato da 71104 Guarda i messaggi
con quell'esempio (tra l'altro errato) non lo aiuti: in Java non è possibile allocare dinamicamente un solo int, semmai un vettore costituito da un solo int. ed inoltre Java ha un comodissimo garbage collector, percui niente delete
ho detto dovrebbe perchè non so un'h di java

comunque sia non penso sia un errore allocare dinamicamente un intero in quella maniera....non serve a niente farlo...era giusto per far vedere i due operatori...
__________________
Si può vincere una guerra in due...o forse anche da solo. Si può estrarre il cuore anche al più nero assassino, ma è più difficile cambiare un'idea!
mapomapo è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 13:46   #7
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da nico88desmo Guarda i messaggi
Ho provato con questo codice
Codice:
#pragma once

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
//#include "h1.h"

namespace prova_1 {

	public ref class Form2 : public System::Windows::Forms::Form {
	
	h1 *p = new h1();

	public:

		
		Form2(void) {
			InitializeComponent();
			
			//
			//TODO: aggiungere qui il codice del costruttore.
			//
		}
però mi dà errore nell'allocazione di p
uhm, stai usando C++ Managed, non C++ nudo e crudo... purtroppo sintatticamente parlando non so aiutarti, ma rifacendomi al C++ standard posso dirti che (a differenza di Java) non è possibile inizializzare una variabile membro alla sua dichiarazione nella classe: la devi inizializzare per forza da codice. dal momento che usi C++ Managed non so se ti conviene usare new, piuttosto dovresti documentarti sull'operatore gcnew che supporta il garbage collector (se usi gcnew non hai bisogno di fare delete).
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 13:47   #8
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da mapomapo Guarda i messaggi
comunque sia non penso sia un errore allocare dinamicamente un intero in quella maniera....
in Java si, in C++ no, ma l'errore nell'esempio C++ era un altro: hai assegnato un int ad un int*
Codice:
v = 2;
avresti dovuto scrivere invece:
Codice:
*v = 2;
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 06-07-2007, 14:16   #9
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
Quote:
Originariamente inviato da 71104 Guarda i messaggi
uhm, stai usando C++ Managed, non C++ nudo e crudo... purtroppo sintatticamente parlando non so aiutarti, ma rifacendomi al C++ standard posso dirti che (a differenza di Java) non è possibile inizializzare una variabile membro alla sua dichiarazione nella classe: la devi inizializzare per forza da codice. dal momento che usi C++ Managed non so se ti conviene usare new, piuttosto dovresti documentarti sull'operatore gcnew che supporta il garbage collector (se usi gcnew non hai bisogno di fare delete).
Che differenza c'è???
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2007, 18:28   #10
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
up
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2007, 18:41   #11
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
la differenza è che il C++ Managed assomiglia di più a una piattaforma managed, per l'appunto; tanto per cominciare ha un garbage collector, e poi non so di preciso quali altre differenze ci siano; forse il fatto che un programma scritto in Visual C++ in C++ Managed produce bytecode anziché un eseguibile nativo.

comunque sia quando in giro senti parlare di C++ di certo non si sta parlando di C++ Managed: quando se ne parla viene specificato esplicitamente.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2007, 18:44   #12
mapomapo
Senior Member
 
L'Avatar di mapomapo
 
Iscritto dal: May 2005
Città: Bari
Messaggi: 349
Quote:
Originariamente inviato da 71104 Guarda i messaggi
in Java si, in C++ no, ma l'errore nell'esempio C++ era un altro: hai assegnato un int ad un int*
Codice:
v = 2;
avresti dovuto scrivere invece:
Codice:
*v = 2;
devo smetterla di dare consigli quando torno a casa la sera
inutile dirti che leggevo *v in "automatico".....che nab....

vabbè
__________________
Si può vincere una guerra in due...o forse anche da solo. Si può estrarre il cuore anche al più nero assassino, ma è più difficile cambiare un'idea!
mapomapo è offline   Rispondi citando il messaggio o parte di esso
Old 09-07-2007, 10:17   #13
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
Quote:
Originariamente inviato da 71104 Guarda i messaggi
la differenza è che il C++ Managed assomiglia di più a una piattaforma managed, per l'appunto; tanto per cominciare ha un garbage collector, e poi non so di preciso quali altre differenze ci siano; forse il fatto che un programma scritto in Visual C++ in C++ Managed produce bytecode anziché un eseguibile nativo.

comunque sia quando in giro senti parlare di C++ di certo non si sta parlando di C++ Managed: quando se ne parla viene specificato esplicitamente.
Capito.
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza Sottile, leggero e dall'autonomia WOW: OPPO Reno...
Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Ryzen 7 9800X3D supera il muro dei 7,3 G...
Ascend 950, 960 e 970: Huawei prepara il...
Mitsubishi svela la Eclipse Cross elettr...
PS5 Slim Digital: la nuova revisione ha ...
Scoperto bug grave su Chrome: Google ril...
In Italia si perde il 42% dell'acqua imm...
HONOR Magic V5: da chiuso è gi&ag...
Arriva PowerEdge XE7740, il server di De...
Ancora controlli sulle e-bike, a Civitan...
Annunciato accidentalmente il nuovo gioc...
Spese militari da record: il conto nasco...
Intel e NVIDIA uniscono le forze: cos&ig...
Silent Hill f raccoglie ottimi voti su F...
L'industria farmaceutica americana si af...
Xiaomi YU7 GT avvistato al Nurburgring: ...
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: 15:39.


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