如何创建将持有指向功能指针的队列?

时间:2018-12-22 15:38:18

标签: c++ c++11 visual-c++

我尝试使队列可以接收指向函数的指针-我找不到如何做的方法

这是我的代码

$(document).ready(function() {
  $(document).on('click', 'a[data-role=update]', function() {
    var id = $(this).data('id');
    var isim2 = $('#' + id).children('td[data-target=isim2]').text();
    var haksayisi = $('#' + id).children('td[data-target=haksayisi]').text();
    var aciklama2 = $('#' + id).children('td[data-target=aciklama2]').text();

    $('#isim2').val(isim2);
    $('#haksayisi').val(haksayisi);
    $('#aciklama2').val(aciklama2);
    $('#id').val(id);
    $('#myModal').modal('toggle');
  });

  $('#save').click(function() {
    var id = $('#id').val();
    var isim = $('#isim2').val();
    var haksayisi = $('#haksayisi').val();
    var aciklama2 = $('#aciklama2').val();

    $.ajax({
      url: 'connect.php',
      method: 'POST',
      data: {
        'isim2': isim,
        'haksayisi': haksayisi,
        'aciklama2': aciklama,
        'id': id
      },
      success: function(response) {
        console.log(response);
      }
    });
  });
});

1 个答案:

答案 0 :(得分:4)

非静态成员函数需要调用一个对象。通过使用普通的myMathElement->Print_1,您将不提供任何对象,而只是提供指向成员函数的指针。

使用std::bind来提供对象作为函数的第一个参数:

t1.func = std::bind(&MyMath::Print_1, myMathElement);

或使用lambda expressions

t1.func = [myMathElement]() { myMathElement->Print_1(); };

对于您的错误,您可能是由于Queue类中的某个问题(您没有向我们展示)而得到的,但是更可能的原因并非来自push呼叫,而是从分配给func成员的呼叫。

您应该从作业中获取它们,因为它们不是有效的作业。您不能使用这样的成员函数,必须使用地址运算符&并使用 class (或结构)而不是对象进行完全作用域。如上面的std::bind调用所示,您必须使用&MyMath::Print_1