template< int nArraySize , class Element >
class ArrayAlloter {
public :
....
private :
Element m_element[ nArraySize ];
...
}
ArrayAlloter < 99, ClassA> m_arr;
这边就报错了。
“ m_element ”数组元素类型不能是函数或抽象类类型
class ClassA : public ClassBase {
....
}
然后 ClassBase: 其他 struct1,struct2
卡了 2 天了。。。
1
Yiph 2018-04-24 12:21:18 +08:00
ArrayAlloter < 99, ClassA> m_arr; 在这里调用的地方,ClassA 的定义可见吗?
|
2
chigco OP |
3
chigco OP 2. 调用在 AAA.h 中
#include "ClassA.h" class AAA { private: ArrayAlloter < 99, ClassA> m_arr; } 这边就报错了。 “ m_element ”数组元素类型不能是函数或抽象类类型 note: 参见对正在编译的 类 模板 实例化 "ArrayAlloter < 99, ClassA>" 的引用 |
4
forestyuan 2018-04-24 14:51:47 +08:00
估计问题出在虚函数上
|
5
acros 2018-04-24 15:05:12 +08:00
ClassA 是怎么构造的?(构造函数?)
换指针可以吗? |
6
yorTX9t 2018-04-25 01:54:57 +08:00
因为声明 Element m_element[ nArraySize ]; 的时候,Element 的大小必须是编译期常量,抽象类明显不符合要求。
如果多态是必须的,数组也不想放弃,建议考虑下编译期多态,而不是运行期多态,也就是 CRTP。 |