^请解释我的问题是如何与您链接的问题重复。
我正在尝试将多维数组传递给函数。该数组看起来像这样:
const char CHECKERS_ANIMATION[][8] = {
{0xcc,0xcc,0x33,0x33,0xcc,0xcc,0x33,0x33},
{0x33,0x33,0xcc,0xcc,0x33,0x33,0xcc,0xcc}
};
我有很多这些数组。它们都是Nx8,其中N在编译时是已知的。
在我的类头文件中,我有一个公共方法定义如下:
template <typename T, size_t frames, size_t rows> void playAnimation(int device_number, const T (&animation)[frames][rows], int iterations = 1, int speed = 50000);
此方法的实施:
template <typename T, size_t frames, size_t rows> void LEDMatrix::playAnimation(int device_number, const T (&animation)[frames][rows], int iterations, int speed)
{
cout << "r: " << rows << ", f: " << frames << endl;
for (int i = 0; i < iterations; i++) {
for (int j = 0; j < frames; j++) {
for (int k = 0; k < rows; k++) {
putRow(device_number, k, animation[j][k]);
}
usleep(speed);
clearDisplay(device_number);
}
}
}
该方法如下调用:
obj->playAnimation(0, CHECKERS_ANIMATION);
我选择了这种方法,因为我需要知道方法中数组的NxM大小。
当我编译它时,我收到以下错误:
/tmp/ccMH2CBE.o: In function `main':
test.cpp:(.text.startup+0x44): undefined reference to `void LEDMatrix::playAnimation<char, 13u, 8u>(int, char const (&) [13u][8u], int, int)'
collect2: ld returned 1 exit status
我该如何解决这个问题?我已经杀了两天试图解决我认为是一个简单的问题。
谢谢。