Hi,
I want to use boost::multi_index_container with a class that have
protected constructors, but the compile fails.
I think I should make multi_index_container a friend of my class, but I
don't know how.
#include <iostream>
#include
#include
#include
#include
#include
class Item
{
public:
typedef boost::shared_ptr<Item> P;
static P create()
{
return P(new Item());
}
static P create(P item)
{
return P(new Item(item));
}
protected:
Item()
{
}
Item(P item)
: source(item->get_source())
, target(item->get_target())
{
}
public:
std::string source;
std::string target;
std::string get_source() const {return source;}
std::string get_target() const {return target;}
struct key : boost::multi_index::composite_key<
P,
boost::multi_index::const_mem_fun- ,
boost::multi_index::const_mem_fun
-
>{};
typedef boost::multi_index_container<
P,
boost::multi_index::indexed_by<
boost::multi_index::ordered_non_unique<
key,
boost::multi_index::composite_key_result_lesskey::result_type
>
>
> index_t;
};
int main()
{
Item::index_t index;
Item::P t1 = Item::create();
index.insert(t1);
return 0;
}
Thanks in advance:
Imre Horvath