Oppure

Loading
24/07/18 9:04
Thejuster
Buongiorno,

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

in C# posso fare esempio:



classe prova
{

object Lista = new List<String>();

}




Applicazione


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?
mire.forumfree.it/ - Mire Engine
C# UI Designer
24/07/18 12:32
pierotofy
In C++ hai const_cast, reinterpret_cast, static_cast e dynamic_cast.

docs.oracle.com/cd/E19422-01/819-3690/…

Nel tuo esempio l'equivalente in C++ e' static_cast.
Ultima modifica effettuata da pierotofy 24/07/18 12:36
Il mio blog: piero.dev
24/07/18 12:54
Thejuster
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.
mire.forumfree.it/ - Mire Engine
C# UI Designer
24/07/18 13:31
nessuno
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

class Object
{
protected:
    Object(){};
    virtual ~Object(){};

public:
    virtual std::string toString() const {return("");};
}; 


e derivi tutto da questa.

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


Ultima modifica effettuata da nessuno 24/07/18 13: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à.
24/07/18 13:32
nessuno
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 24/07/18 13: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à.