当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 再谈“在STL列表(Lists)中插入不同类型的对象”
VC++ 中的 再谈“在STL列表(Lists)中插入不同类型的对象”
再谈“在STL列表(Lists)中插入不同类型的对象” 看到贵网站上的一篇文章:“在STL列表(Lists)中插入不同类型的对象”。我觉得该文回答还没有指出问题的本质,所以本人提出我的观点,恳请指正。本人认为,错误产生的原因在于指针转化过程中,程序没有指出该指针最初的原型,或者说,由于未找到正确的子类函数地址才发生调用错误的,本人原代码如下:用Dev-cpp的g++编译通过。 #include<iostream>#include<algorithm>#include <vector>#include <string>/** * 父类:synObject */class synObject { public : synObject(); string GetClass(); string className;};synObject::synObject(){ className = "synObject";}string synObject::GetClass(){ return className;}/** * 子类1:synPin */ class synPin : public synObject { string pin;public : synPin(); void SetPin(string Pin); string GetPin();private:};synPin::synPin(){ className = "synPin";}void synPin::SetPin(string Pin){ pin = Pin;}string synPin::GetPin(){ return pin;}/** * 子类2:synCell */ class synCell : public synObject { string cell;public : synCell(); void SetCell(string Cell); string GetCell();private:};synCell::synCell(){ className = "synCell";}void synCell::SetCell(string Cell){ cell = Cell;}string synCell::GetCell(){ return cell;}/** * 系统运行主程序 */ int main(){ file://生成对象 synObject * pMyObject; pMyObject = new synObject; synPin * pMyPin; pMyPin = new synPin; pMyPin->SetPin("myPin"); synCell * pMyCell; pMyCell = new synCell; pMyCell->SetCell("myCell"); //插入对象 vector<synObject *> MyVector; MyVector.empty(); MyVector.push_back(pMyObject); MyVector.push_back(pMyPin); MyVector.push_back(pMyCell); //调用对象 vector<synObject *>::iterator ThisVector=MyVector.begin(); cout<<"Program begin here:"<<endl; while( ThisVector != MyVector.end() ) { cout << (**ThisVector).GetClass() << endl ; if ( (**ThisVector).GetClass().compare("synCell") == 0) { cout << (**((synCell**)ThisVector)).GetCell() << endl ; } if ( (**ThisVector).GetClass().compare("synPin") == 0) { cout << (**(synPin**)ThisVector).GetPin() << endl ; } ThisVector++; }}//程序结束 |
评论 (0) All