65,209
社区成员
发帖
与我相关
我的任务
分享
list<IFoo>::iterator //没法引子类
list<IFoo*>::iterator //这样就得自己New?自己Del?
[/quote]
一般都是用new在堆上创建,你想要栈上变量也可以。传地址
lst.push_bacl(&obj);
list<IFoo>::iterator //没法引子类
list<IFoo*>::iterator //这样就得自己New?自己Del?
[/quote]
你的需求还真的挺奇怪的
再仔细的问一下 你是否要实现 迭代器的多态??可是迭代器确是用template实现的 于是发生了冲突?[/quote]
对[/quote]
你用的是stl的迭代器吗?对迭代器不熟呀!迭代器也是用pointer实现的,但是c++多态需要依靠指针和引用来实现。那样的话,你必须用pointer to iterator来实现多态,好糟糕的代码,简直难以想象
list<IFoo>::iterator //没法引子类
list<IFoo*>::iterator //这样就得自己New?自己Del?
[/quote]
你的需求还真的挺奇怪的
再仔细的问一下 你是否要实现 迭代器的多态??可是迭代器确是用template实现的 于是发生了冲突?[/quote]
对
list<IFoo>::iterator //没法引子类
list<IFoo*>::iterator //这样就得自己New?自己Del?
[/quote]
你的需求还真的挺奇怪的
再仔细的问一下 你是否要实现 迭代器的多态??可是迭代器确是用template实现的 于是发生了冲突?
list<IFoo>::iterator //没法引子类
list<IFoo*>::iterator //这样就得自己New?自己Del?
class IFoo{...};
class CBar : public IFoo{...};
...
list<CBar> SomeContainer;
list<IFoo>::iterator refIFoo = GetFirstFoo();
//想要这种效果
list<IFoo>::iterator GetFirstFoo() {return SomeContainer.begin();}
//如果是指针的话就可以,但迭代器怎么做?
IFoo* GetFirstFoo(){return (IFoo*)pSomeObj;}