防止数组从 *[N] 衰减到 **

Prevent array decaying to ** from *[N]

本文关键字:衰减 数组      更新时间:2023-10-16

我像这样声明了我的数组:

FT_Interface<4096> *to_make_ft[3] = { /* initialization with existing objects */ };

我的接口声明如下:

template<cyg_ucount32 S, int N>
class FT_Thread {
  FT_Thread(FT_Interface<S> *entry[N]){}
};

我称之为(正如预期的那样):

FT_Thread<4096, 3> ft(to_make_ft);

然而,它抱怨指针已经衰减。

ecos/install/include/ft/thread.hxx:70: error: incompatible types in assignment of ‘FT_Interface<4096u>**’ to ‘FT_Interface<4096u>* [3]’

有什么办法可以防止这种情况发生吗?

你需要

FT_Thread(FT_Interface<S>* (&entry)[N]){}
//             note these  ^^-----^

这样,您就可以获得对数组的引用。


编辑:当然,如果你想要一个指向数组的指针,你可以拥有:

FT_Thread(FT_Interface<S>* (*entry)[N]){}

虽然你需要用FT_Thread<4096,3> ft(&to_make_ft)来称呼它.

我不知道

这是否正确,但请尝试更改

FT_Thread(FT_Interface<S> *entry[N]){}

FT_Thread(FT_Interface<S> (*entry[N])){}

我有一种感觉,编译器认为 * 指的是FT_Interface而不是条目。