我是模板的新手,was reading up on them和found a great video tutorial on them。
此外,我知道有两种类型的模板,类和功能模板。但是,在我的代码片段中,我只想使用函数模板而不是类模板,但我希望有一个使用模板的函数声明和定义。在函数定义和声明中为模板提供相同的代码似乎有点奇怪(我在cpp网站上阅读了这个帖子,但我现在只能发布两个链接。)
这是使用带有函数声明和定义的模板的正确语法吗?
以下是合并代码的片段:
class GetReadFile {
public:
// Function Declaration
template <size_t R, size_t C> // Template same as definition
bool writeHistory(double writeArray[R][C], string path);
};
// Function Definition
template <size_t R, size_t C> // Template same as declaration
bool GetReadFile::writeHistory(double writeArray[R][C], string path){...}
答案 0 :(得分:0)
如果您以正确的方式调用它,语法对我来说效果很好:
GetReadFile grf;
double array[5][8];
grf.writeHistory<5,8>(array,"blah");
请参阅live demo。
注意:
只需调用该方法而不指定实际的数组维度,编译器就无法自动推导出这些:
grf.writeHistory(array,"blah");
失败
main.cpp:24:34: error: no matching function for call to 'GetReadFile::writeHistory(double [5][8], const char [5])'
grf.writeHistory(array,"blah");
^
...
main.cpp:10:10: note: template argument deduction/substitution failed:
main.cpp:24:34: note: couldn't deduce template parameter 'R'
grf.writeHistory(array,"blah");
请参阅alternate demo。