0

typedef 引数を取る別の関数にテンプレート関数を渡そうとしています。

たとえば、私は機能を持っています

header.h 内

template<typename A, typename B>
class header: public baseHeader<A, B>{
public:
    typedef void (* funcPointer)(void);
    // and more...
}

source.cxx 内

template<typename A, typename B>
void dosomething(void *arg){
    // code here
}

void processDoSomething(funcPointer F){
    // code here
}

template<typename A, typename B>
void work(){
    processDoSomething(dosomething);
}

コードが非常に乱雑で申し訳ありませんが、私がやろうとしているのは、typedef 引数を取る別の関数にテンプレート関数を渡すことです。processDoSomething(dosomething) で「unresolved overloaded function type」エラーが発生し、typdef 引数と一致しないと言っています。

テンプレート関数の経験があまりないので、何が悪いのかわかりません。誰かが私を助けることができますか?

4

1 に答える 1

1

void 引数を受け入れる関数ポインタを定義しましたがdosomething、引数がありvoid*ます。processDoSomethingまた、次のように関数を宣言する必要があると思います:

void processDoSomething(header<someType, someType>::funcPointer F){
    // code here
}

編集: また、あなたdosomethingはテンプレートであるため、次のように使用する必要があります:(よくわかりません。申し訳ありませんが、今はコードでテストできません)

processDoSomething(&dosomething<someType, someType>);
于 2013-10-08T17:05:05.323 に答える