我写了一个简单的测试程序,尝试学习如何在C++中使用模板静态成员函数。代码编译通过,但不能正常工作(输出一些垃圾值)。我猜测我使用了正确的语法。我已经阅读了这篇文章或者这篇文章和其他一些内容,但仍然不知道我做错了什么。以下是代码:
#include <iostream>
using namespace std;
class Util {
public:
Util();
virtual ~Util();
template <typename T> static void printTab(T tab[]);
};
template <typename T>
void Util::printTab(T tab[]) {
for (unsigned int i=0; i<sizeof(tab)/sizeof(tab[0]); i++) {
cout << tab[0] << " ";
}
cout << endl;
}
int main() {
float tabFloat[5] {1, 2, 3, 4, 5};
unsigned char tabChar[3] {1, 2, 3};
Util::printTab(tabFloat);
Util::printTab(tabChar);
return 0;
}
任何提示都会受到赞赏。
template <typename T,int N> inline static void printTab(T (&tab)[N]) { printTab(tab, N); }
这个函数是你的重载。没有额外开销。 - Pubby