能力值:
( LV12,RANK:450 )
|
-
-
2 楼
为什么不把申请资源的
pInst = new CUnA();
pInst = new CUnB();
写在循环外面,比如这样:pInstA = new CUnA();pInstB = new CUnB();
循环完了再释放?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
谢谢你的回答。
因为我在循环中去判断后,才能给对应的RunFunc方法传参数.只为实现多态
|
能力值:
( LV12,RANK:450 )
|
-
-
4 楼
那就每循环一次释放一次怎么样?要么在循环外申请内存,循环内自己实现多态。多态无非就是
一个函数数组和函数指针而已,循环完了再释放
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
我试过不少方法了。
第一,在循环后delete pInst(不行)
第二,pInst = new CUnA();
pInst->RunFunc(str1, str2);
delete pInst;
pInst = new CUnB();
pInst->RunFunc(str2, str1);
delete pInst;
pInst = new CUnC();
pInst->RunFunc(str3, str2);
delete pInst;(不行)
你能具体上点代码吗???先谢过
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
第二种应该可用才对啊,还有是不是你得析构函数没有声明virtual?这样delete pInst 只会调用基类的析构函数哦
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
析构函数有声明为virtual
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
每个delete 后再 NULL一下行不?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
CBase * pInst[3];
pInst[0] = new CUnA();
pInst[1] = new CUnB();
pInst[2] = new CUnC();
CString str[3];
pInst[i]->RunFunc(str[i], str[(i+1)%2]);
delete[] pInst
怎么样
|
|
|