我无法在模板函数中进行反向调用,尽管传递给它的参数似乎没有问题。首先是头文件:
#ifndef TestTemplate_TestTemplate_h
#define TestTemplate_TestTemplate_h
template<int size>
void printArray(int (*iarr)[size]);
#include "TestTemplate.cpp"
#endif
第二个是 .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'
在源文件中。也许模板编程中有一些我不知道的语法。希望有人能指出我。非常感谢。