PDA

Visualizza la versione completa : [C++] Definire un oggetto managed globale (CLI)


CyberCrasher
28-09-2012, 19:22
Finito :)

Adesso per˛ ho un altro problema relativo ai puntatori managed.
Ho la necessitÓ di mantenere una lista dei wrapper istanziati all'interno del codice c++ che sto creando ma non riesco a farlo:

ref class Wrapper;
caso 1: Wrapper^ listaWrapper = NULL; // Errore: Managed non pu˛ essere globale o statico
caso 2: Wrapper* listaWrapper = NULL; // Errore: Non puoi usare * per classi managed

MItaly
28-09-2012, 19:40
Usa gcroot per creare un oggetto globale unmanaged che tiene un reference ad un oggetto managed.

CyberCrasher
28-09-2012, 20:30
Sembra funzionare, ma non riesco pi¨ a fare i confronti con i normali puntatori managed:

gcroot<Classe^> * lista;

Classe^ elemento;
if (lista==elemento)...

error C2440: '=' : cannot convert from 'Classe ^const ' to 'gcroot<T> *'

e non sto trovando molte documentazioni online :(

MItaly
28-09-2012, 21:13
Dovrebbe essere


gcroot<Classe^> lista;

senza *.

CyberCrasher
29-09-2012, 14:59
Perfetto, anche questo Ŕ risolto :)
Scrivere questi wrap sembra quel gioco dell'albero: per fare l'albero ci vuole xx, per fare xx ci vuoi yy, per fare yy...

Chiusa questa piccola parentesi, ho 2 problemini adesso:



gcroot<Classe^> lista = nullptr;

public ref class Classe{
public:
void function(){
if (lista == this){ // // Errore: '==' illegal for struct
lista=this; // NESSUN ERRORE
};
}
}


e poi non riesco a definire delle property array.

Grazie mille per l'infinita pazienza :)

MItaly
29-09-2012, 15:01
Altra domanda -> altro thread :ciauz:

CyberCrasher
29-09-2012, 15:16
Mi sembri un medico... altro problema.. altro ticket!

Ma anche tu hai ragione :)
Ci vediamo di lÓ... :ciauz:

MItaly
29-09-2012, 15:46
Originariamente inviato da CyberCrasher
Mi sembri un medico... altro problema.. altro ticket!
Vendetta trasversale sul sistema sanitario. :D

Loading