求助:请问AcArray可以组织一系列AcDbLine对象吗?
如题(vc7.0开发autocad2004)我想组织一系列AcDbLine对象
当使用vector模板类时总是出现如下错误:
d:\Program Files\Microsoft Visual Studio .NET\Vc7\include\xmemory(42): error C2661: “AcHeapOperators::operator new” : 没有重载函数接受 2 个参数
不知道为什么。
当我使用AcArray时候,因为找不到相关的例子,不懂得如何初始化AcArray
AcArray<AcDbLine> *lineArray;<BR> AcGePoint3d point1(1,2,0);<BR> AcGePoint3d point2(2,3,0);<BR> AcDbLine *pLine=new AcDbLine(point1,point2);<BR> lineArray->append(*pLine);
此时会有lineArray未初始化的警告,编译后运行时有如下错误:
无法找到动态链接库ACAD.EXE于指定的路径..................
恳请诸位指点。最好能提供使用AcArray的例子(我还没找到)。 我在用vc6编Acad2000程序时,较少用AcArray(ARX自带的类),用MFC类库的CObjectArray类,里面可存储CObject类对象的指针。
第一句改为AcArray<AcDbLine> *lineArray=new(AcArray<AcDbLine>);
可能会有用 不知能否这样:
AcArray lineArray;
AcGePoint3d point1(1,2,0);<BR> AcGePoint3d point2(2,3,0);<BR> AcDbLine *pLine=new AcDbLine(point1,point2);<BR> lineArray.append((void*)pLine);
或干脆:
class AcDbLineArray : public AcGeVoidPointerArray
{
public:
const AcDbLine* at(const int index) const;
BOOL append(AcDbEntity* line);
};
const AcDbLine* ::at(const int index) const
{ return (const AcDbLine* )AcGeVoidPointerArray::at(index);}
BOOL ::append(AcDbEntity* line)
{
if(line==NULL)
{return FALSE;}
if(cast(line)!=AcDbLine::) //
{ return FALSE;}
}
页:
[1]