c++ - 使用成员变量的函子类
问题描述
struct test
{
bool operator()(const test &lhs, const test &rhs)
{
if(flag)
{
// do stuff
}
}
bool flag;
};
std::priority_queue<test, std::vector<test>, test> pq;
在这里的这个仿函数类中(为了作为先验的自定义比较器而构建,它使用一个标志变量,但我不清楚它正在使用哪个对象的标志变量。这里的行为是未定义的吗?
解决方案
是的,它是未定义的。这行代码:
std::priority_queue<test, std::vector<test>, test> pq;
相当于
std::priority_queue<test, std::vector<test>, test> pq{test()};
您可以改为传递您自己的实例test
:
std::priority_queue<test, std::vector<test>, test> pq{test{false}};
推荐阅读
- c# - 用户已删除但仍显示在数据库和视图中,如何删除?
- android - 子类无法访问受保护的方法
- c# - 将格式化字符串 (dd/mm/yy) 转换为 ISO 日期时间
- javascript - React Select 不允许多选
- java - 有没有办法只显示带有 webhdfs REST API 的文件?
- linux - Bash 脚本执行时间过长。中止前无输出
- angular - Ionic NullInjectorError: 没有 NetworkProvider 的提供者
- javascript - 如何将对象数组从 PHP 传递给 JS?
- python - 关系Sqlalchemy中的多态性
- java - 在 Android 上更改小数点分隔符