テンプレート関数内で逆呼び出しを行うことはできませんが、渡されたパラメーターは問題ないようです。最初はヘッダーファイルです:
#ifndef TestTemplate_TestTemplate_h
#define TestTemplate_TestTemplate_h
template<int size>
void printArray(int (*iarr)[size]);
#include "TestTemplate.cpp"
#endif
2番目は.cppファイルです。
#include <iostream>
using std::cout;
using std::endl;
template<int size>
void printArray(int (*iarr)[size]){
if(size == 1){
return;
}
else{
const int s = size - 1;
cout << size << endl;
int arr[s][s] = {};
printArray<s>(arr);
}
}
最後はメインファイルです:
#include <iostream>
#include "TestTemplate.h"
int main(int argc, const char * argv[])
{
const int size = 4;
int iarr[size][size]= {{1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4}};
printArray<size>(iarr);
}
今、私はそれを言っているコンパイルエラーを受け取りました
no matching function for call to 'printArray'
ソースファイル内。テンプレートプログラミングには、ここではわからない文法があるかもしれません。誰かが私に教えてくれたらいいのにと思います。どうもありがとうございました。