#include <QApplication>
#include <unordered_map>
#include <memory>
#include <QDebug>
#include <functional>
template<typename T,typename ...args>
class TestClassA
{
public:
static TestClassA& instance()
{
static TestClassA a;
return a;
}
void Add(int a,T* b,void(T::*)(args...));
void Remove(int a);
std::unordered_map<int,std::function<void(*)(args...)>> m_test{};
};
template<typename T, typename ...args>
void TestClassA<T,args...>::Add(int a, T *b, void (T::*pf)(args...))
{
this->m_test.emplace(a,std::bind(pf,b));
}
template<typename T, typename ...args>
void TestClassA<T,args...>::Remove(int a)
{
this->m_test.erase(a);
}
class TestClassB
{
public:
void TestTwo(int,int)
{
qDebug()<<"TestTwo";
};
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
auto testCBIns=new TestClassB();
TestClassA<TestClassB,int,int>::instance().Add(1,testCBIns,&TestClassB::TestTwo);
TestClassA<TestClassB>::instance().Remove(1);
MainWindow w;
w.show();
return a.exec();
}
大家好,我目前与这些工作了很长时间, 我试图将成员函数设置为std::unordered_map的值。但是,编译器总是报告与标题无关的消息,我无法解决它,请给我帮助,谢谢。
在过去的几天里,这个问题没有进一步的反馈,@NathanOliver 提供的我的问题的解决方案已经解决。感谢您耐心解答我的问题,谢谢!