I'am пытается создать контейнер как с индексом и ключ доступа с уникальными ключами: так вот мой код:повышение :: multi_index_container с random_acces и hashed_unique
#include <QString>
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/hashed_index.hpp>
#include <boost/multi_index/random_access_index.hpp>
#include <boost/multi_index/mem_fun.hpp>
class MyClass{
public:
MyClass(const QString& name): mName(name){}
QString name () const { return mName; }
void setName (const QString& name) { mName = name ;}
private:
QString mName;
};
using namespace boost::multi_index;
typedef multi_index_container<
MyClass,
indexed_by<
random_access<tag<struct RandomIndex>>,
hashed_unique<
tag<struct NameIndex>,
const_mem_fun<MyClass, QString, &MyClass::name>
>
>
> Table;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Table table;
for (MyClass v : { "first", "second", "third" }){
table.push_back(v);
}
return a.exec();
}
Когда я пытаюсь скомпилировать его у меня есть error boost_1_55_0 \ boost \ functional \ hash \ extensions.hpp: 269: error: C2664: 'size_t boost :: hash_value (std :: type_index)': не может преобразовать аргумент 1 из 'const QString' в 'std :: type_index' Оператор без пользовательского преобразования, который может выполнить это преобразование, или оператор не может называться
Как я могу видеть boos t не знает ничего, кроме класса Qt QString, но я не могу найти, как исправить эту проблему. Может кто-нибудь объяснить, как исправить мой код?