gpt4 book ai didi

c++ - boost::multi_index 使用自定义键提取器语法问题?

转载 作者:行者123 更新时间:2023-11-28 01:15:13 25 4
gpt4 key购买 nike

我正在应用 boost multi_index 示例的示例 6。 https://www.boost.org/doc/libs/1_71_0/libs/multi_index/doc/examples.html#example6

我仍在学习 key 提取的语法。我发现 member key 提取器的第三个参数需要一个指向 type< 类型的 class 成员的指针 其中类是第一个参数,类型是第二个参数。

template<class Class,typename Type,Type Class::*PtrToMember>
struct member;

但是在示例 6 中,作者使用了不是指针的第三个参数......

key_from_key< 
member<car_manufacturer,
const std::string,
&car_manufacturer::name>,
member<car_model,
const car_manufacturer *,
car_model::manufacturer> >

这应该是 & 来创建指向类型 const car_manufacturer * 的类 car_model 成员的指针,所以给我们 指向指针的指针 .....但他只是使用成员标识符car_model::manufacturer,它只是指向成员的指针。
那么为什么作者从第三个参数中省略了 & 呢?

如果需要更多代码,我会把它放上去。

最佳答案

恭喜,您在 Boost.MultiIndex 文档中发现了一个错误:-)

应该是&car_model::manufacturer而不是 car_model::manufacturer ,正如您正确指出的那样。更重要的是,car_model::manufacturer甚至不是合法的 C++,因为如果有的话,它会声明一个成员的引用,这 does not exist in the language .

此外,文档说:

struct car_model
{
std::string model;
car_manufacturer* manufacturer;
int price;
};

它应该在哪里(在实际代码中正确编写):

struct car_model
{
std::string model;
const car_manufacturer* manufacturer;
int price;
};

否则,member<car_model,const car_manufacturer *,&car_model::manufacturer>manufacturer 的类型不匹配成员(member)。

我会在文档中修复所有这些问题。感谢您发现困惑。

关于c++ - boost::multi_index 使用自定义键提取器语法问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58919665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com