我得到這個錯誤。沒有匹配函數調用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>]
類是像這樣
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中寫下評論。 –
我把代碼分解成了幾行,還有錯誤信息。對於那個很抱歉。這有幫助嗎? – js0823
你可以發佈一個正是你試圖編譯的例子 – aaronman