1

私には機能があります

double function(const infocontainer&);

パラメータとして別の関数に渡されます。

void bigfunction(std::ostream& os, const std::string& s, double F(const infocontainer&), const infocontainer a, const infocontainer b)
{
    os << F(a) << F(b) << std::endl;
}

テンプレートを使用した場合、F に infocontainer a と b のアドレスを指定する必要があります。なんで?

template <class F> void bigfunction(std::ostream& os, const std::string& s, F, const infocontainer a, const infocontainer b)
{
    os << F(&a) << F(&b) << std::endl;
}

これは私が関数を呼び出す方法ですMAIN

bigfunction(std::cout, "name", function, cont_a, cont_b);
4

2 に答える 2

1

おそらく、(推定された) タイプとパラメーターの名前を区別したいでしょう。

template <class F>
void bigfunction(std::ostream& os, const std::string& s, F& f, const infocontainer a, const infocontainer b)
{
    os << f(&a) << f(&b) << std::endl;
}
于 2013-11-04T17:50:27.557 に答える