|
Boost Users : |
From: Joaquín Mª López Muñoz (joaquin_at_[hidden])
Date: 2006-04-07 10:24:16
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.
>
>
> 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?
>
Hello Parag,
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
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net