找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1167|回复: 10

[求助]:很怪的问题,请高手帮助

[复制链接]
发表于 2002-11-19 16:32:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
为什么会出现这种错误:
AcDbLayerTableRecord * pLayerTableRecord=new AcDbLayerTableRecord;
上午还很正常,下午就会出现下面的问题
error C2660: 'new' : function does not take 3 parameters

为什么呢?请高手帮助
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-19 16:37:12 | 显示全部楼层

Re: [求助]:很怪的问题,请高手帮助

最初由 fyje 发布
[B]为什么会出现这种错误:
AcDbLayerTableRecord * pLayerTableRecord=new AcDbLayerTableRecord;
上午还很正常,下午就会出现下面的问题
error C2660: 'new' : function does not take 3 parameters

为什么呢?.. [/B]


编译器就说是这行出现错误吗?我想应该是其他地方有问题,把完整代码贴上来吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 192个

财富等级: 日进斗金

发表于 2002-11-19 16:56:41 | 显示全部楼层
3 parameters
在哪?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-11-19 17:02:12 | 显示全部楼层
代码如下:很标准的一个创建层程序:
AcDbObjectId createNewLayer(CString myLayer)
{
        AcDbLayerTable *pLayerTable;
        acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pLayerTable,AcDb::kForWrite);
        AcDbLayerTableRecord * pLayerTableRecord=new AcDbLayerTableRecord;
    pLayerTableRecord->setName(myLayer);
    AcDbObjectId pLayerId;
    if (pLayerTable->has(myLayer)==false)
                pLayerTable->add(pLayerId,pLayerTableRecord);
        pLayerTable->close();
        pLayerTableRecord->close();
        return pLayerId;
}
另外,还有一个使用new的行也出错
AcDbObjectId createLine(AcGePoint3d startPt,AcGePoint3d endPt)
{
    AcDbLine *pLine = new AcDbLine(startPt, endPt);
    ...
}

Compiling...
MyDiag.cpp
E:\PROG\lcdHatch\MyDiag.cpp(61) : error C2660: 'new' : function does not take 3 parameters
E:\PROG\lcdHatch\MyDiag.cpp(127) : error C2660: 'new' : function does not take 3 parameters
Error executing cl.exe.

FYJlcdHatch.arx - 2 error(s), 0 warning(s)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 192个

财富等级: 日进斗金

发表于 2002-11-19 17:12:49 | 显示全部楼层
代码看不出毛病
可能是其他部分配置问题
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-11-20 10:30:26 | 显示全部楼层
知道了,这是VC的一个BUG,删除#define new DEBUG_NEW编译一次,或者在build/configration里面只保留win32 debug也行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-11-20 16:54:57 | 显示全部楼层
我想知道vc编译器中的debug和full debug有什么相同和不同之处?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-11-20 22:06:57 | 显示全部楼层

-

最初由 照猫画虎 发布
[B]代码看不出毛病
可能是其他部分配置问题 [/B]

代码是有毛病的,不过与出错无关。

如果层名重复的话,会有内存不会被释放
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-11-21 08:28:06 | 显示全部楼层

Re: -

最初由 rave 发布
[B]
代码是有毛病的,不过与出错无关。

如果层名重复的话,会有内存不会被释放 [/B]


层名存在的问题,我在这一句里面处理了,还会出现内存不被释放的问题吗?
if (pLayerTable->has(myLayer)==false)
pLayerTable->add(pLayerId,pLayerTableRecord);
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-11-21 16:22:42 | 显示全部楼层

Re: Re: -

最初由 fyje 发布
[B]

层名存在的问题,我在这一句里面处理了,还会出现内存不被释放的问题吗?
if (... [/B]




如果已有同名层存在 你通过

  1. AcDbLayerTableRecord *pLayerTableRecord=new AcDbLayerTableRecord;
复制代码

分配的内存就不会得到释放

应该先判断,如果无同名层才去 new
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-11-22 13:44:25 | 显示全部楼层
噢,明白了,
AcDbLayerTable *pLayerTable;
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pLayerTable,AcDb::kForWrite);
if (pLayerTable->has(myLayer))
{
  pLayerTable->close();
  return 0;
}
AcDbLayerTableRecord * pLayerTableRecord=new AcDbLayerTableRecord;
...
}
就对了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-21 11:05 , Processed in 0.278818 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表