我已经声明了我的数组:
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]’
有没有办法防止这种情况发生?
你需要
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).