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

我收到此错误。

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的冗余限定不会使您的代码更具可读性,尽管有些编译器接受,但我认为它实际上是非法的。

https://stackoverflow.com/questions/19259316/

相关文章:

c++ - 无法使派生的WebDuino类正常工作-使用 'Web_HelloWorld.ino'编

compiler-errors - 在我的Triangle类中找不到符号错误

c# - C#在数学表达式中使用未分配的变量

sql - Oracle数据库触发器编译问题

c++ - 将文本文件读入结构并显示数组

c++ - SMTP编译错误

java - 错误: The local variable jars may not have be

java - 找不到符号(扩展另一个类)

ios - 添加libRxAutomationUni_411.a库时出现链接器错误

module - Mingw - kernel32.mod - 没有这样的文件或目录