Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Convertire un oggetto
Forum - C/C++ - Convertire un oggetto

Avatar
Thejuster (Member)
Guru^2


Messaggi: 1863
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 11:04
Martedì, 24/07/2018
Buongiorno,

Vorrei capire il procedimento di come definire un valore di tipo oggetto.
e successivamente convertirlo.

in C# posso fare esempio:


Codice sorgente - presumibilmente C/C++

  1. classe prova
  2. {
  3.  
  4. object Lista = new List<String>();
  5.  
  6. }




Applicazione

Codice sorgente - presumibilmente Plain Text

  1. List<string> valori = (List<string>)prova.Lista;



Che in pratica forzo l'oggetto lista a diventare una lista di tipo string.
il problema è che in C++ non riesco a dichiarare una variabile generica che possa contenere qualsiasi tipo di valore
e poi convertirlo.

ho letto qualcosa sul typename ma non ho afferrato il suo funzionamento.
Qualcuno sarebbe così gentile da spiegarmi un pò come procerede?


PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6193
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 14:32
Martedì, 24/07/2018
In C++ hai const_cast, reinterpret_cast, static_cast e dynamic_cast.

https://docs.oracle.com/cd/E19422-01/819-3690/Cast.html

Nel tuo esempio l'equivalente in C++ e' static_cast.

Ultima modifica effettuata da pierotofy il 24/07/2018 alle 14:36


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1863
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 14:54
Martedì, 24/07/2018
ah ecco grazie mille piero.

Mentre invece per la dichiarazione di una variabile generica?
ho letto che bisogna utilizzare un template.

ma come gestisco valori diversi?

tipo voglio che A inizialmente si di tipo intero, in seguito contenga una lista o un array esempio.

in C# basta utilizzare il tipo object o var.

Per caso, non dirmi che devo implementare nel template tutti i tipi di conversione :rotfl:
sarebbe una faticaccia.


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5686
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:31
Martedì, 24/07/2018
Non ha senso paragonare C/C++ al C# ... E' la libreria .NET che dispone di una classe (object) da cui discendono le altre classi.

Se vuoi in C++ la scrivi

Codice sorgente - presumibilmente Delphi

  1. class Object
  2. {
  3. protected:
  4.     Object(){};
  5.     virtual ~Object(){};
  6.  
  7. public:
  8.     virtual std::string toString() const {return("");};
  9. };



e derivi tutto da questa.

Le conversioni (cast) non sono la stessa cosa ...



Ultima modifica effettuata da nessuno il 24/07/2018 alle 15:33


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5686
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:32
Martedì, 24/07/2018
O in C la cosa più vicina è un puntatore generico

void *p;

a cui far puntare quello che vuoi ... ma non è la stessa cosa anche in considerazione della enorme differenza nella gestione della memoria tra i due linguaggi ... (ovvero, tra il C e il framework .NET).

Ultima modifica effettuata da nessuno il 24/07/2018 alle 15:37


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote