类成员函数参考

时间:2019-03-10 02:21:22

标签: c++ parameter-passing pass-by-reference

我是一名业余程序员,只有一点知识是危险的事情。我想在类中包含一个用户定义的比较函数(例如std :: less)。因此,我编写了一个测试程序:

#include "pch.h"
#include <iostream>
#include <functional>


bool myfunc(const int& a, const int& b) {
    return a < b;
}

template <class K>
class myclass
{
public:
    myclass(const std::function<bool(const K&, const K&)>& fn);
    const std::function<bool(const K&, const K&)>& comp;
};

template <class K>
myclass<K>::myclass(const std::function<bool(const K&, const K&)>& fn) : comp(fn)
{

}

using std::cout;

int main()
{
    myclass<int> foo(myfunc);
    cout << std::boolalpha << myfunc(1, 2) << "\n";
    cout << std::boolalpha << foo.comp(1, 2) << "\n";
    cout << "Hello World!\n"; 
}

程序编译。 myfunc可以正常工作。但是,我收到以下运行时错误消息:

Exception thrown at 0x75BAB022 in forward.exe: Microsoft C++ exception: std::bad_function_call at memory location 0x00B4F5F4.
Unhandled exception at 0x75BAB022 in forward.exe: Microsoft C++ exception: std::bad_function_call at memory location 0x00B4F5F4.

是的,我一直在寻找答案,不,我还没有找到我所理解的东西。任何帮助,将不胜感激。 (用VS17编写,并已打开c ++ 17。)

0 个答案:

没有答案