这对你来说可能很容易,但我还没有参考。我不明白为什么这不起作用。请告诉我正确的风格。
template <typename T>
void shuffle(T (&array)[], size_t len){};
我试着这样称呼它:
uint_fast8_t dirBag[4]
Random::shuffle(dirBag, sizeof(dirBag)/sizeof(decltype(dirBag[0])));
错误是:
Error 1 error C2784: 'void Random::shuffle(T (&)[],size_t)' : could not deduce template argument for 'T (&)[]' from 'uint_fast8_t [4]'
答案 0 :(得分:5)
尝试:
template <typename T, size_t N>
void shuffle(T (&array)[N])
{
};
此外,在函数体内,您具有数组的大小: N
。如果你必须传递一个大小作为参数,我当然认为你可以,但参数将是独立的。
网站注意:根据您的功能名称判断,您也可以找到感兴趣的内容:
uint_fast8_t dirBag[4];
// ...populate your array...
std::random_shuffle(std::begin(dirBag), std::end(dirBag));