c++ - 没有匹配的函数用于调用c++

标签 c++ templates compiler-errors typedef

我收到此错误。

error: no matching function for call to ‘namespaceA::ClassA<namespaceB::someFunc<short int, 3u>, namespaceB::someFunc<float, 3u> >::funcFromA(int&, void (namespaceB::classB<namespaceB::someFunc<short int, 3u>, namespaceB::someFunc<float, 3u> >::*)(void*), int&)’

note: candidates are: void namespaceA::ClassA<TYPE_A, TYPE_B>::funcFromA(int, void (namespaceA::ClassA<TYPE_A, TYPE_B>::*)(void*), int) [with TYPE_A = namespaceB::someFunc<short int, 3u>, TYPE_B = namespaceB::someFunc<float, 3u>]


类是这样的
A类
template<typename TYPE_A, typename TYPE_B>
class ClassA {

typedef void (ClassA::*someTypeDef)(void*);

void funcFromA(int A, namespaceA::ClassA<TYPE_A, TYPE_B>::
                  someTypeDef takeFunc, int B);

}
A.cxx类
void namespaceA::ClassA::funcFromA(int A, 
          namespaceA::ClassA::someTypeDef takeFunc, int B) {
    // Do something with taken function
}
B类
template<typename TYPE_A, typename TYPE_B>
class classB {
void classB<TYPE_A, TYPE_B>::CallThisFunc(void *someParm);
    // Do Something
}
ClassB.cxx
template<typename TYPE_A, typename TYPE_B>
void classB<TYPE_A, TYPE_B>::CallThisFunc(void *someParm){
    // Do something
}

template<typename TYPE_A, typename TYPE_B>
void classB<TYPE_A, TYPE_B>::MainFunc() {
    int A = 1;
    int B = 1;
    ClassA->funcFromA(A, &classB::CallThisFunc, B); // <--- Error
}
我试图修复该错误,但未成功,并且正在杀死我。
我该如何解决这个问题?
编辑:我想要完成的基本思想是有两个类,并且我试图在ClassB中调用ClassA函数,并且ClassB是模板化的,而ClassB中ClassA方法中的参数之一是typedef。

最佳答案

函数ClassA<A, B>::funcFromA()ClassA<A, B>的成员函数为参数。但是,您尝试将ClassB<A, B>的成员函数作为参数传递给它。由于ClassA<A, B>ClassB<A, B>是不相关的,因此这显然不起作用。

顺便说一句,ClassB<A, B>::CallThisFunc的冗余限定不会使您的代码更具可读性,尽管有些编译器接受,但我认为它实际上是非法的。

关于c++ - 没有匹配的函数用于调用c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19259316/

相关文章:

c++ - std::exception 的 what() 返回 "std::exception"

gcc - 无法接受正确的GNU编译器

iphone - 这段代码有什么错误?

templates - 在 umbraco 模板内分配/调用页面

c++ - 模板重新绑定(bind)与后期模板绑定(bind)或如何调用小 pig 支持类型中的模板

c++ - 在模板类中重载 operator++

qt - 无法编译源代码-没有这样的文件或目录<libpq-fe.h>

c++ - iso 12.1 p5 中的第 4 个要点对我来说没有意义

c++ - 作者基于 union 的可选 <bool> 实现在 P2641 中定义良好吗?

c++ - Cpp 中 Stdio.H header 的结果不均匀