Iは問題がある、私は次のように異なる寸法のシステムに対応するテンプレートクラスを定義:自動生成機能ヘッダ、可変長テンプレート
template <std::size_t N>
class system {
std::array<cv::Mat, N> matrices;
...
};
は、私はに基づいて異なるパラメータを取る異なる関数を定義する必要がありますシステムのサイズそのような何か:
Out-of-line definition of 'fun' does not match any declaration in 'system<3>'
また、私は、ヘッダー機能は、自動生成テンプレートパラメータN
に基づいてされることを希望:
template <>
template<typename T>
void system<1>::fun(T & a){ }
template <>
template<typename T>
void system<2>::fun(T & a, T & b){ }
template <>
template<typename T>
void system<3>::fun(T & a, T & b, T & c){ }
しかししようとしたが、コンパイラは次のエラーを与えるこの戦略を使用しています。私はvariadicテンプレートを使用しようとしましたが、幸運はありませんでした。
私はあなたが達成しようとしていることを100%確信していませんが、このアプローチは間違ったIMOのようです。おそらくコードを自動生成するために何か他の方法を使って運が良いと思うでしょう(例:小さなスクリプト) – UnholySheep