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

Red*_*edX 2 c++

我已经声明了我的数组:

FT_Interface<4096> *to_make_ft[3] = { /* initialization with existing objects */ };
Run Code Online (Sandbox Code Playgroud)

我的界面声明如下:

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

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

FT_Thread<4096, 3> ft(to_make_ft);
Run Code Online (Sandbox Code Playgroud)

但它抱怨说指针已经腐烂了.

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

有没有办法防止这种情况发生?

Xeo*_*Xeo 5

你需要

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

有了它,您将获得对该数组的引用.


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

FT_Thread(FT_Interface<S>* (*entry)[N]){}
Run Code Online (Sandbox Code Playgroud)

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