首页 > 解决方案 > 使用成员变量的函子类

问题描述

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;

在这里的这个仿函数类中(为了作为先验的自定义比较器而构建,它使用一个标志变量,但我不清楚它正在使用哪个对象的标志变量。这里的行为是未定义的吗?

标签: c++functor

解决方案


是的,它是未定义的。这行代码:

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}};

推荐阅读