我有以下类:Container、Element以及从 Element继承的几个类,例如。按钮,输入等...
将元素添加到 Container 数组时遇到问题,我的 main() 如下所示:
Container c;
c.Add( Button(...) );
c.Add( Input(...) );
其中“...”是一些构造函数参数。
在容器类中,我有一个指针数组来存储属于该容器的所有元素:
Element ** elements;
但我遇到的问题是如何实现 Add 方法,我希望这样的事情会起作用:
void Add(const CControl & newElement){
elements[elemCnt++] = &newElement;
}
(分配元素数组:elements = new Element * [100];)
但是我收到了这个编译错误:
main.cpp: In member function ‘Container& Container::Add(const Element&)’:
main.cpp:138:23: error: invalid conversion from ‘const Element*’ to ‘Element*’
当我删除 const 限定符时,我收到一个编译错误,指出没有合适的候选人。
问题是,我是 C++ 中的多态性和继承的新手,所以我可能会走错路。对此最好的方法是什么?
PS:主要方法必须看起来一样,也不建议任何向量或STL的东西。