引用数组

Eth*_*one 3 c++ arrays reference

这对你来说可能很容易,但我还没有参考.我不明白为什么这不起作用.请告诉我正确的风格.

template <typename T>
void shuffle(T (&array)[], size_t len){};
Run Code Online (Sandbox Code Playgroud)

我试着这样称呼它:

uint_fast8_t dirBag[4]
Random::shuffle(dirBag, sizeof(dirBag)/sizeof(decltype(dirBag[0])));
Run Code Online (Sandbox Code Playgroud)

错误是:

Error   1   error C2784: 'void Random::shuffle(T (&)[],size_t)' : could not deduce template argument for 'T (&)[]' from 'uint_fast8_t [4]'
Run Code Online (Sandbox Code Playgroud)

Who*_*aig 5

尝试:

template <typename T, size_t N>
void shuffle(T (&array)[N])
{
};
Run Code Online (Sandbox Code Playgroud)

此外,在函数体内,您具有数组的大小:N.如果你必须传递一个大小作为参数,我当然认为你可以,但参数将是独立的.


网站注意:根据您的功能名称判断,您可能还会发现以下内容:

uint_fast8_t dirBag[4];

// ...populate your array...

std::random_shuffle(std::begin(dirBag), std::end(dirBag));
Run Code Online (Sandbox Code Playgroud)

  • @Tolga完全正确,我认为Kerrek的评论实际上很好地解决了这个问题.这个答案更多的是"如何通过提供更完整的类型来首先解决这个问题",但我认为他对数据中没有大小规格的事实的评估,它被认为是一个不完整的类型,因此不能完全推断可能是现货.(和问题上的+1可能比你想象的更深= P) (2认同)