Parag Gadkari ha escrito:
I am having trouble while using multi index container with the "managed c++" component. Here is the typedef that the compiler won't accept.Hello Parag,
typedef multi_index_container< gcroot<interface_entity*>, indexed_by< ordered_unique< identity<gcroot<interface_entity*> > >, ordered_non_unique <member<gcroot<interface_entity*> , int,&interface_entity::entity_drawingid > >, > > entity_collection;The real deal is with the member template which needs the address of member variable of the interface_entity class. Entity class is an abstract Managed type (specified with __gc), and it is not allowed to take the address of a non-static member of a managed type.Does anybody know of a workaround?
A simple solution is to write a custom key extractor as described at:
In your particular case, the extractor would look like the following
(warning, uncompiled):
struct entity_drawingid_extractor
{
typedef int result_type;
result_type operator()(const gcroot<interface_entity*>&
x)const
{
return x->entity_drawingid;
}
};
Does this help? Is this the only problem you've stumbled upon when
using B.MI with Managed C++? I'm curious as reports of usage of
Boost libs in .NET C++-like languages are scarce.
Joaquín M López Muñoz
Telefóinca, Investigación y Desarrollo