【发布时间】:2013-10-08 22:04:33
【问题描述】:
我收到此错误。
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>]
类是这样的
ClassA.h
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);
}
ClassA.cxx
void namespaceA::ClassA::funcFromA(int A,
namespaceA::ClassA::someTypeDef takeFunc, int B) {
// Do something with taken function
}
ClassB.h
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。
【问题讨论】:
-
这太复杂了,请认真地发布更多代码,并将该错误分解为几行,滚动很难阅读!我正在等待回答,所以请在其中写下@AlecTeal 的评论。
-
我把代码分成几行,还有错误消息。对于那个很抱歉。这有帮助吗?
-
你能发布一个你正在尝试编译的例子吗
标签: c++ templates compiler-errors typedef