テンプレートクラスの特殊化メンバ - 一致する配列なし

私は関数を実装するテンプレートクラスを持っています:

template
class Matrix
{
...
void setItems(const T *tab)
{
    //writing content from tab to Matrix internal data 
}
...
};

char *の特殊な関数を作成したいときは、文字列用にメモリを割り当てる必要があります。私は使いたい:

template<> void Matrix::setItems(const char** tab)
{
...

問題は、これはビルドされないことです。

template-id 'setItems<>' for 'void Matrix::setItems(const char**)' does not match any template declaration

私は今まで特化した機能に問題はなかった。私は何が欠けていますか?

Additional info:
I must use char*

1

1 答え

Tがchar *の場合、const T *はchar * const *です。

したがって、メンバー関数は次のようになります。

template<> void Matrix::setItems(char*const* tab)
{
  ...
}

型の後にconstを置くことはかなり一般的です

void setItems(T const* tab)

拡張型があなたのケースでどのようなものになっているのかが少しはっきりしています。

2
追加された
これは私の問題を解決します。私はconstの位置について覚えています。ありがとうございました!
追加された 著者 Maciej Kucia,