防止数组从 *[N] 衰减到 **
Prevent array decaying to ** from *[N]
我像这样声明了我的数组:
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而不是条目。
相关文章:
- 为什么多维数组中的空字符串文本衰减为空指针?
- 从原始指针(衰减的 C 样式数组)和大小生成范围::视图
- 数组变量衰减为指针
- 如果我只有指向第一个数组元素的指针,考虑到数组衰减,是否可以找到数组的长度?
- 在分配给指针到固定数组期间没有指针衰减
- 防止参数包扩展中的数组衰减
- 数组衰减为指针和重载分辨率
- 运行时大小的数组和指针衰减
- 编译器在数组到指针衰减存储中生成的指针在哪里
- C 与 C++ 中的数组衰减规则
- 有没有办法避免数组到指针衰减
- 为什么数组类型不会衰减到类模板的指针
- 我能逆转数组到指针衰减的过程吗?
- C++数组衰减不会发生以供参考,为什么?
- 数组到指针衰减问题
- 为什么在模板函数中数组衰减为指针?
- 数组衰减为Lambda指针
- 如果通过模板函数中的 const 引用传递,数组不会衰减到指针
- 1D 数组衰减为指针,但 2D 数组不会这样做,为什么?
- 将数组显式衰减为指针