Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-07-2007, 22: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, 01: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, 02: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, 02: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, 10: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, 12: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, 14: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, 14: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, 15: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, 19: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, 19: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, 19: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, 11: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


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Apple conferma che l'arrivo della 'nuova...
Le vendite di Square Enix sono in netto ...
iPhone 17e si mostra in un video 'first ...
Il nuovo Xiaomi Watch 5 è pronto ...
Steam Deck è out of stock in dive...
Le migliori offerte Amazon del weekend, ...
PC più potente, meno spesa: su Amazon ta...
Amazon Haul: come fare acquisti 'pazzi' ...
Threads permetterà agli utenti di...
Monitor gaming in offerta su Amazon: 180...
Samsung vuole riconquistare la leadershi...
L'app di YouTube per Apple Vision Pro &e...
Fastweb + Vodafone: clienti e ricavi in ...
Artemis II: nuovo test prima del Wet Dre...
GTA 6 gratis se nasce un figlio il giorn...
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: 16:33.


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