PDA

View Full Version : [C++] Estendere classe System::Collections::ArrayList


Dezseven
27-02-2010, 15:41
Salve a tutti!

Per il mio progetto C++ mi serve di creare una classe (chiamata EntityList), che effettui l'estensione della classe System::Collections::ArrayList, come ho fatto in questo esempio:

class EntityList : public ArrayList{
private:
.....
public:
.....

Il problema mi deriva quando compilo, dato che mi dice:

error C3625: 'EntityList': an unmanaged type cannot derive from a managed type 'System::Collections::ArrayList'


Mi chiedo: mi manca qualche parola chiave da inserire nella dichiarazione della nuova classe che estende "ArrayList", oppure sbaglio ad estendere la classe ArrayList in questo modo, oppure non è possibile estendere tali classi?

P.S. In java, con la classe java.util.ArrayList basta fare

public class EntityList extends ArrayList{}

e tutto funziona.

Aiuto please :D

||ElChE||88
27-02-2010, 15:46
public ref class EntityList : public ArrayList

PS: Non è C++, è C++/CLI

Dezseven
27-02-2010, 16:10
E se tale arrayList voglio farla diventare un arrayList di oggetti "Entity" invece che un arrayList di "object" come devo fare?

In java bastava fare:

public class EntityList extends ArrayList<Entity>

in C++ invece?

tomminno
27-02-2010, 17:32
E se tale arrayList voglio farla diventare un arrayList di oggetti "Entity" invece che un arrayList di "object" come devo fare?

In java bastava fare:

public class EntityList extends ArrayList<Entity>

in C++ invece?

Come ti hanno già fatto notare quello che stai usando non è C++.
Potenza del marketing Microsoft.
ArrayList in .NET è una collection di object, dovresti usare l'equivalente generics List.

In C++ invece ammesso di aver definito una classe ArrayList<T> banalmente sarebbe stato:
class EntityList : public ArrayList<Entity>
Ma più probabilmente:
class EntityList : public std::vector<Entity>