我是一名业余程序员,只有一点知识是危险的事情。我想在类中包含一个用户定义的比较函数(例如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。)