我已经声明了我的数组:
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]’
有没有办法防止这种情况发生?
答案 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而不是条目。