在不使用decltype[c++]的情况下为键类型传递比较函数
Pass a comparison function for Key Type without using decltype[c++]
想知道如何在不使用decltype的情况下,将指向函数的指针作为比较函数作为Key Type传递。
使用decltype
std::multiset<Sales_data, decltype(compareIsbn)*> bookstore(&compareIsbn);
不使用decltype
std::multiset<Sales_data, (bool (*pf)(const Sales_data &, const Sales_data &)> bookstore(&compareIsbn);
尽管会弹出错误。
Testing.cpp:15:36: error: use of undeclared identifier 'pf'
std::multiset<Sales_data, (bool (*pf)(const Sales_data &, const Sales_data &)> ...
^
Testing.cpp:15:40: error: expected expression
std::multiset<Sales_data, (bool (*pf)(const Sales_data &, const Sales_data &)> ...
^
Testing.cpp:15:60: error: expected expression
std::multiset<Sales_data, (bool (*pf)(const Sales_data &, const Sales_data &)> ...
^
Testing.cpp:15:81: error: use of undeclared identifier 'bookstore'
std::multiset<Sales_data, (bool (*pf)(const Sales_data &, const Sales_data &)> bookstor...
^
Testing.cpp:15:104: warning: declaration does not declare anything [-Wmissing-declarations]
...(bool (*pf)(const Sales_data &, const Sales_data &)> bookstore(&compareIsbn);
^
1 warning and 4 errors generated.
任何帮助都将不胜感激,谢谢!
您不需要名称参数-您只需要类型:
std::multiset<Sales_data,
bool (*)(const Sales_data &, const Sales_data &)
> bookstore(&compareIsbn);
您所做的是声明一个名为pf
的类型的函数指针。
您也不需要&
,只需要compareIsbn
即可。
相关文章:
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 将C++子类成员函数(虚拟实现)传递给 C 类型函数指针
- C++ 这里有一个返回 (24) 的布尔返回类型函数
- 使用SFINAE来检测void返回类型函数的存在
- 使用此类型函数有什么优势
- 为什么此函数通过类型函数指针调用后,呼叫明智地行为
- 如何使用无类型函数指针调用C++成员函数
- 模板返回类型函数如何在C++中工作
- 具有通用类型函数的动态库[C ]
- 如何在返回类型函数模板的专用化中使用派生类型?( "couldn't infer template argument" )
- Bon appetit :从 int 返回类型函数在 main() 中打印字符串
- 对于需要其他模板参数的类型函数的部分模板专业化
- c++错误的参数类型-函数指针
- 延迟评估模板类型函数
- 在引用或指针返回类型函数上输入
- 具有指针数据类型的非类型函数模板参数
- STL中使用的C++自定义比较类型(函数谓词与较少结构)
- C++模板基类的非类型函数模板的 using 声明
- 字符串到类型函数,模板专用化使调用统一
- 自由类型函数可以接受 Unicode 文件名吗?