有三个类,arc和line是edge的派生类,现在我要用edge类的指针形成一个CArray序列,用这个序列来表示一个多边形的边界。在使用的时候有下面的问题。
class edge{};
class line:public edge {};
class arc:public edge{};
在类A里面要用到这样的情况
class A
{
public:
CArray<edge *, edge *> edgeArray;
void fun1();
void fun2();
};
void A::fun1()
{
arc a1;
line l1,l2;
edgeArray.Add(a1);
edgeArray.Add(l1);
edgeArray.Add(l2); ........
//在这个函数里面初始化了edgeArray,得到了指向边界每条边的指针,根据继承的性质,edge的指针可以自动判断它是指向line还是arc的对象。但是arc和line的对象只能在这个函数里生存,当我到fun2里面用edgeArray的时候,edge指针指向的对象已经不存在了,这种情况应该怎么办。不要告诉我把所有的line和arc对象作为类的成员:)
}
void A::fun2()
{
在这个函数里面使用edgeArray的成员的时候,edge*所指向的对象已经不存在了:(
}
请问高手这样有什么办法解决,如果是你,你会怎么做呢,告诉我思想就可以了,多谢
class edge{};
class line:public edge {};
class arc:public edge{};
在类A里面要用到这样的情况
class A
{
public:
CArray<edge *, edge *> edgeArray;
void fun1();
void fun2();
};
void A::fun1()
{
arc a1;
line l1,l2;
edgeArray.Add(a1);
edgeArray.Add(l1);
edgeArray.Add(l2); ........
//在这个函数里面初始化了edgeArray,得到了指向边界每条边的指针,根据继承的性质,edge的指针可以自动判断它是指向line还是arc的对象。但是arc和line的对象只能在这个函数里生存,当我到fun2里面用edgeArray的时候,edge指针指向的对象已经不存在了,这种情况应该怎么办。不要告诉我把所有的line和arc对象作为类的成员:)
}
void A::fun2()
{
在这个函数里面使用edgeArray的成员的时候,edge*所指向的对象已经不存在了:(
}
请问高手这样有什么办法解决,如果是你,你会怎么做呢,告诉我思想就可以了,多谢
CArray<edge*,edge*> edgeArray;
void A::fun1()
{
arc* pa1=new arc;
line* pl1=new line;
line* pl2=new line;
edgeArray.Add(pa1);
edgeArray.Add(pl1);
edgeArray.Add(pl2); ........