我有以下类:集装箱,元,然后偶联的类,继承元件,例如。 按钮,输入,等...多态性和指针的数组(C++)
添加元素,集装箱阵列时,我有一个问题,我的主要()看起来是这样的:
Container c;
c.Add(Button(...));
c.Add(Input(...));
其中“...”有一些构造参数。
在容器类我有一个数组的指针来存储属于该容器中的所有元素:
Element ** elements;
但我遇到的问题是如何实现Add方法,我希望的东西像这样将工作:
void Add(const CControl & newElement){
elements[elemCnt++] = &newElement;
}
(元件阵列被分配:元素=新的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的东西。
使用STL有什么问题?你为什么不想用它?它让生活变得如此简单 – 2012-04-07 13:17:52
您在这里犯了一个重大错误,那就是使用_temporary_变量的地址并将其存储。 “Add”的参数只是暂时的,在通话结束后对象将被销毁。除此之外,我同意@TonyTheLion,为什么不使用非常好的标准容器? – 2012-04-07 13:20:44
可能是这样,我需要复制元素并存储动态分配副本的地址。 我不能使用STL,因为它是在没有STL的情况下在环境中测试的分配。 – Smaug 2012-04-07 13:28:33