Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关于Boost::multi_index_容器,错误c3849,绑定到int有什么问题?_C++_Boost_Boost Multi Index - Fatal编程技术网

C++ 关于Boost::multi_index_容器,错误c3849,绑定到int有什么问题?

C++ 关于Boost::multi_index_容器,错误c3849,绑定到int有什么问题?,c++,boost,boost-multi-index,C++,Boost,Boost Multi Index,我有以下代码,但“int age”似乎有问题,代码如下: struct MyStruct { char* firstName; char* secondName; int age; }; typedef composite_key <MyStruct*, BOOST_MULTI_INDEX_MEMBER(MyStruct, char*, firstName), BOOST_MULTI_INDEX_MEMBER(MyStruct, char*

我有以下代码,但“int age”似乎有问题,代码如下:

struct MyStruct
{
    char* firstName;
    char* secondName;
    int age;
};

typedef composite_key
    <MyStruct*,
    BOOST_MULTI_INDEX_MEMBER(MyStruct, char*, firstName),
    BOOST_MULTI_INDEX_MEMBER(MyStruct, char*, secondName),
    BOOST_MULTI_INDEX_MEMBER(MyStruct, int, age)
    > comp_key;


struct CompareLess
{   // functor for operator<=

    static inline int compare(const char* left, const char* right)
    {
        return strcmp(left, right);
    }
    inline bool operator()(const char* left, const char* right) const
    {   // apply operator<= to operands
        return compare(left, right)<0;
    }
    static inline int compare(const MyStruct* myStruct1, const MyStruct* myStruct2)
    {
        int result= compare(myStruct1->firstName, myStruct2->firstName);
        if(result!=0)
            return result;
        else
        {
            return compare(myStruct2->secondName, myStruct2->secondName);
        }
    }
    inline bool operator()(const MyStruct* myStruct1, const MyStruct* myStruct2)
    {
        return compare(myStruct1, myStruct2)<0;
    }
};

typedef multi_index_container
    <
    MyStruct*, 
    indexed_by
        <
        ordered_unique
            <
                comp_key,
                /*CompareLess*/
                composite_key_compare
                <
                    CompareLess,
                    CompareLess,
                    std::less<int>
                >
            >
        >
    > MyContainer;



boost::ptr_vector<MyStruct> vec;
MyStruct* struct1=new MyStruct();
struct1->firstName="Michael";
struct1->secondName="Mike";
struct1->age=20;
vec.push_back(struct1);



MyContainer myContainer;
myContainer.insert(struct1);
char* first="Michael";
char* second="Mike";
string michael="Michael";
auto it=myContainer.find(boost::make_tuple(michael.c_str(), (const char*)second,20);
if(it!=myContainer.end())
    cout << (*it)->age << endl;
struct MyStruct
{
char*名字;
字符*第二个名称;
智力年龄;
};
typedef复合_键
comp_键;
结构无比较
{//operatorsecondName的函子,myStruct2->secondName);
}
}
内联布尔运算符()(常量MyStruct*myStruct1,常量MyStruct*myStruct2)
{
返回比较(myStruct1、myStruct2)
>
>
>霉素;
boost::ptr_向量向量向量;
MyStruct*struct1=新的MyStruct();
struct1->firstName=“Michael”;
struct1->secondName=“Mike”;
结构1->年龄=20岁;
向量推回(结构1);
MyContainer-MyContainer;
myContainer.insert(struct1);
char*first=“迈克尔”;
char*second=“迈克”;
字符串michael=“michael”;
autoit=myContainer.find(boost::make_tuple(michael.c_str(),(const char*)秒,20);
if(it!=myContainer.end())

在修复了一个小的语法错误(缺少括号)并添加了
#include
s等之后,这个东西在这里工作(MSVC 2012)。

parens在错误的位置boost::make_tuple(michael.c_str(),(const char*)second 20)谢谢你,我刚刚编辑过。但是问题仍然存在。照它说的做,将MyStruct中的“char*”改为“const char*”。