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

时间:2011-05-17 14:30:25

标签: c++

我已经声明了我的数组:

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]’

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

2 个答案:

答案 0 :(得分:5)

你需要

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

通过它,您可以获得对数组的引用。


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

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

虽然您需要使用FT_Thread<4096,3> ft(&to_make_ft)调用它。

答案 1 :(得分:1)

我不知道这是否正确,但请尝试更改

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

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

我觉得编译器认为*是指FT_Interface而不是条目。