1>ShortestPath.obj : error LNK2019: 无法解析的外部符号 “private: class std::map<int,int,struct std::less<int>,class std::allocator<struct std::pair<int const ,int> > > __thiscall CShortestPath::GetStopList(class _com_ptr_t<class _com_IIID<struct IFeature,&struct __s_GUID const _GUID_d4803ee9_79f4_11d0_97fc_0080c7f79481> >,class _com_ptr_t<class _com_IIID<struct IFeatureClass,&struct __s_GUID const _GUID_d4803ee6_79f4_11d0_97fc_0080c7f79481> >)” ( GetStopList@CShortestPath@@AAE AV $map@HHU $less@H@std@@V $allocator@U $pair@$$CBHH@std@@@2@@std@@V $_com_ptr_t@V $_com_IIID@UIFeature@@$1 _GUID_d4803ee9_79f4_11d0_97fc_0080c7f79481@@3U__s_GUID@@B@@@@V $_com_ptr_t@V $_com_IIID@UIFeatureClass@@$1 _GUID_d4803ee6_79f4_11d0_97fc_0080c7f79481@@3U__s_GUID@@B@@@@@Z),该符号在函数 “private: void __thiscall CShortestPath::InitCentroid(class _com_ptr_t<class _com_IIID<struct IFeatureClass,&struct __s_GUID const _GUID_d4803ee6_79f4_11d0_97fc_0080c7f79481> >,class _com_ptr_t<class _com_IIID<struct IFeatureClass,&struct __s_GUID const _GUID_d4803ee6_79f4_11d0_97fc_0080c7f79481> >)” ( InitCentroid@CShortestPath@@AAEXV $_com_ptr_t@V $_com_IIID@UIFeatureClass@@$1 _GUID_d4803ee6_79f4_11d0_97fc_0080c7f79481@@3U__s_GUID@@B@@@@0@Z) 中被引用 求解决。。。 //结构体 struct Centroid { position location; map<int,int> stopList; }; struct POI { position location; map<int,int> stopList; }; //函数 map<int,int> GetStopList(IFeaturePtr centroid,IFeatureClassPtr Stop) { ISelectionSetPtr pSelSet; int m_Radius=300; map<int,int> stopList; IGeometryPtr pGeometry; IPointPtr pPoint=(IPointPtr)pGeometry; IGeometryPtr pBuffer; ITopologicalOperatorPtr pTopo; pTopo->Buffer(m_Radius,&pBuffer); ISpatialFilterPtr pFilter; pFilter->putref_Geometry(pBuffer); pFilter->put_SpatialRel(esriSpatialRelIntersects); IDatasetPtr pSet=(IDatasetPtr)Stop; IWorkspacePtr pWorkSpace; pSet->get_Workspace(&pWorkSpace); Stop->Select(pFilter,esriSelectionTypeHybrid,esriSelectionOptionNormal,pWorkSpace,&pSelSet); long sum; pSelSet->get_Count(&sum); while (sum==0) { m_Radius*=2; pTopo->Buffer(m_Radius,&pBuffer); pFilter->put_SpatialRel(esriSpatialRelIntersects); Stop->Select(pFilter,esriSelectionTypeHybrid,esriSelectionOptionNormal,pWorkSpace,&pSelSet); pSelSet->get_Count(&sum); } long idxStopID; Stop->FindField(_T("StopID"),&idxStopID); esriICursorPtr pCursor; pSelSet->Search(NULL,false,&pCursor); IFeatureCursorPtr pFeatureCursor=(IFeatureCursorPtr)pCursor; IFeaturePtr pStop; pFeatureCursor->NextFeature(&pStop); VARIANT tempStopID; int tempWalkTime; while(pStop!=NULL) { pStop->get_Value(idxStopID,&tempStopID); tempWalkTime=GetWalkTime(centroid,pStop); stopList.insert(map<int,int>::value_type(tempStopID.intVal,tempWalkTime)); pFeatureCursor->NextFeature(&pStop); } return stopList; } void CShortestPath::InitCentroid(IFeatureClassPtr CentroidClass,IFeatureClassPtr Stop ) { long count,idxCentroidID; CentroidClass->FindField(_T("CentroidID"),&idxCentroidID); CentroidClass->FeatureCount(NULL,&count); centroidList=new Centroid[count]; IFeatureCursorPtr pFeatureCursor; CentroidClass->Search(NULL,false,&pFeatureCursor); IFeaturePtr pCentroid; pFeatureCursor->NextFeature(&pCentroid); VARIANT tempCentroidID; IGeometryPtr pGeometry; IPointPtr pPoint; double tempX,tempY; while (pCentroid!=NULL) { pCentroid->get_Value(idxCentroidID,&tempCentroidID); centroidList[tempCentroidID.intVal].stopList=GetStopList(pCentroid,Stop); pCentroid->get_ShapeCopy(&pGeometry); pPoint=(IPointPtr)pGeometry; pPoint->get_X(&tempX); pPoint->get_Y(&tempY); centroidList[tempCentroidID.intVal].location.x=tempX; centroidList[tempCentroidID.intVal].location.y=tempY; pFeatureCursor->NextFeature(&pCentroid); } } void CShortestPath::InitPOI(IFeatureClassPtr POIClass,IFeatureClassPtr Stop ) { long count,idxPOIID; POIClass->FindField(_T("GoalID"),&idxPOIID); POIClass->FeatureCount(NULL,&count); poiList=new POI[count]; IFeatureCursorPtr pFeatureCursor; POIClass->Search(NULL,false,&pFeatureCursor); IFeaturePtr pPOI; pFeatureCursor->NextFeature(&pPOI); VARIANT tempPOIID; IGeometryPtr pGeometry; IPointPtr pPoint; double tempX,tempY; while (pPOI!=NULL) { pPOI->get_Value(idxPOIID,&tempPOIID); poiList[tempPOIID.intVal].stopList=GetStopList(pPOI,Stop); pPOI->get_ShapeCopy(&pGeometry); pPoint=(IPointPtr)pGeometry; pPoint->get_X(&tempX); pPoint->get_Y(&tempY); centroidList[tempPOIID.intVal].location.x=tempX; centroidList[tempPOIID.intVal].location.y=tempY; pFeatureCursor->NextFeature(&pPOI); } } |
|
20分 |
map<int,int> GetStopList(IFeaturePtr centroid,IFeatureClassPtr Stop)
没有加类名限制:CShortestPath map<int,int> CShortestPath::GetStopList(IFeaturePtr centroid,IFeatureClassPtr Stop) |