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。 |