EDN Admin
Well-known member
I have error in line: MRefCell::iterator RefIterator;
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<span style="font-family:Arial Error 23 error C2146: syntax error : missing ; before identifier RefIterator d:commonincludeMGridMap.h 31
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<span style="font-family:Arial Error 24 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int d:commonincludeMGridMap.h<span style="white-space
re
31
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
This project is originally to visual studio 2003.. and Im trying to update to visual studio 2010, but i have this error, Im beginner in C++ and I need to fix this project to continue my study.. I hope you guys can help me
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<span style="text-decoration:underline CODE::
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<div style="color:black; background-color:white
<pre>#ifndef MGRIDHASH_H
#define MGRIDHASH_H
#include <crtdbg.h>
#include <list>
#include <math.h>
<span style="color:blue using <span style="color:blue namespace std;
<span style="color:green /// x-y à à à à z à à à Ãà à Ãà à Ã
<span style="color:green /// - Ã
<span style="color:green /// - MGridMap<UserType>
<span style="color:green /// - Ã ÃÃ Ã ÃÃ /ÃÃ / ÃÃ
<span style="color:green /// - MGridMap<UserType>::HREF h = MGridMap<UserType>::Add(x, y, z, UserTypeObj);
<span style="color:green /// - MGridMap<UserType>::Move(x, y, z, UserTypeObj, h);
<span style="color:green /// - MGridMap<UserType>:
el(h);
<span style="color:blue template<<span style="color:blue class _T>
<span style="color:blue class MGridMap{
<span style="color:blue public:
<span style="color:green /// Ã Ã ÃÃ ÃÃ ÃÃ Ã Ã Ã Ã UserData
<span style="color:blue struct MITEM
{
<span style="color:blue float x, y, z; <span style="color:green ///< Position
_T Obj; <span style="color:green ///< User Data Object
};
<span style="color:green /*********************/
list <<span style="color:blue int> c1;
list <<span style="color:blue int>::iterator c1_Iter;
list <<span style="color:blue int>::const_iterator c1_cIter;
<span style="color:green /*********************/
<span style="color:green /// x-yÃÃ Ã Ã ÃÃ Ã ÃÃ ÃÃ ÃÃÃ
<span style="color:blue class MRefCell : <span style="color:blue public list<MITEM>{};
<span style="color:green /// User Data Object ÃÃ Ã ÃÃÃ ÃÃ ÃÃ ÃÃ Ã
<span style="color:blue struct HREF
{
MRefCell* pRefCell;
MRefCell::iterator RefIterator;<span style="color:green // RefIterator;
};
<span style="color:blue protected:
MRefCell* m_pGridMap; <span style="color:green ///< Ã Ã Ã
<span style="color:blue float m_fSX; <span style="color:green ///< ÃÃÃ XÃÃ ÃÃÃÃ
<span style="color:blue float m_fSY; <span style="color:green ///< ÃÃÃ YÃÃ ÃÃÃÃ
<span style="color:blue float m_fEX; <span style="color:green ///< ÃÃÃ XÃÃ Ã
<span style="color:blue float m_fEY; <span style="color:green ///< ÃÃÃ YÃÃ Ã
<span style="color:green //float GetXSize(); ///< ÃÃÃ XÃÃ Ã Ã
<span style="color:green //float GetYSize(); ///< ÃÃÃ YÃÃ Ã Ã
<span style="color:blue int m_nXDivision; <span style="color:green ///< ÃÃÃ XÃÃ Ã
<span style="color:blue int m_nYDivision; <span style="color:green ///< ÃÃÃ YÃÃ Ã
<span style="color:blue protected:
MRefCell* GetCell(<span style="color:blue float x, <span style="color:blue float y){
<span style="color:blue int nXPos = <span style="color:blue int((x-m_fSX)/(GetXSize()/(<span style="color:blue float)m_nXDivision));
<span style="color:blue int nYPos = <span style="color:blue int((y-m_fSY)/(GetYSize()/(<span style="color:blue float)m_nYDivision));
<span style="color:green // Ã Ã
_ASSERT(nXPos>=0 && nYPos>=0);
<span style="color:blue if(nXPos>=m_nXDivision) <span style="color:blue return NULL;
<span style="color:blue if(nYPos>=m_nYDivision) <span style="color:blue return NULL;
<span style="color:blue return &(m_pGridMap[nXPos+nYPos*m_nXDivision]);
}
<span style="color:blue public:
MGridMap(<span style="color:blue void){
m_pGridMap = NULL;
}
<span style="color:blue virtual ~MGridMap(<span style="color:blue void){
Destroy();
}
<span style="color:green /// Ã Ã
<span style="color:green /// @param fSX ÃÃÃ XÃÃ ÃÃÃÃ
<span style="color:green /// @param fSY ÃÃÃ YÃÃ ÃÃÃÃ
<span style="color:green /// @param fXSize ÃÃÃ XÃÃ Ã Ã
<span style="color:green /// @param fYSize ÃÃÃ YÃÃ Ã Ã
<span style="color:green /// @param nXDivision ÃÃÃ XÃÃ Ã
<span style="color:green /// @param nYDivision ÃÃÃ YÃÃ Ã
<span style="color:green //void Create(float fSX, float fSY, float fXSize, float fYSize, int nXDivision, int nYDivision){
<span style="color:blue void Create(<span style="color:blue float fSX, <span style="color:blue float fSY, <span style="color:blue float fEX, <span style="color:blue float fEY, <span style="color:blue int nXDivision, <span style="color:blue int nYDivision){
m_pGridMap = <span style="color:blue new MRefCell[nXDivision*nYDivision];
m_fSX = fSX;
m_fSY = fSY;
m_fEX = fEX;
m_fEY = fEY;
<span style="color:green //GetXSize() = fXSize;
<span style="color:green //GetYSize() = fYSize;
m_nXDivision = nXDivision;
m_nYDivision = nYDivision;
}
<span style="color:green /// ÃÃÃ
<span style="color:blue void Destroy(<span style="color:blue void){
<span style="color:blue if(m_pGridMap!=NULL){
<span style="color:blue delete[] m_pGridMap;
m_pGridMap = NULL;
}
}
<span style="color:green /// ÃÃÃ ÃÃ
<span style="color:green /// @return ÃÃ Ã Ã ÃÃ Ã Ã HREF ÃÃÃ ÃÃ / ÃÃ Ã ÃÃÃ Ã ÃÃ Ã.
HREF Add(<span style="color:blue float x, <span style="color:blue float y, <span style="color:blue float z, _T Obj){
_ASSERT(x>=m_fSX && y>=m_fSY);
_ASSERT(x<=m_fEX && y<=m_fEY);
HREF hPos;
MRefCell* pCell = GetCell(x, y);
<span style="color:blue if(pCell==NULL){
hPos.pRefCell = NULL;
<span style="color:blue return hPos;
}
MITEM item;
item.x = x;
item.y = y;
item.z = z;
item.Obj = Obj;
hPos.RefIterator = pCell->insert(pCell->end(), item);
hPos.pRefCell = pCell;
<span style="color:blue return hPos;
}
<span style="color:green /// ÃÃÃ ÃÃ
<span style="color:blue void Del(HREF hRef){
_ASSERT(hRef.pRefCell!=NULL);
hRef.pRefCell->erase(hRef.RefIterator);
}
<span style="color:green /// Ãà à Obj à à Ã, Obj à à à à Ãà à Ãà à à ÃÃÃà à Ã.
<span style="color:blue void Get(list<_T>* pObjs, <span style="color:blue float x, <span style="color:blue float y, <span style="color:blue float z, <span style="color:blue float fRadius){
<span style="color:blue float fXCellSize = GetXSize()/(<span style="color:blue float)m_nXDivision;
<span style="color:blue float fYCellSize = GetYSize()/(<span style="color:blue float)m_nYDivision;
<span style="color:blue int nXPos = <span style="color:blue int((x-m_fSX)/fXCellSize);
<span style="color:blue int nYPos = <span style="color:blue int((y-m_fSY)/fYCellSize);
#define MORE_SEARCH 2
<span style="color:blue int nXRadius = <span style="color:blue int(fRadius/fXCellSize) + MORE_SEARCH;
<span style="color:blue int nYRadius = <span style="color:blue int(fRadius/fYCellSize) + MORE_SEARCH;
<span style="color:blue float fRadiusPow = fRadius*fRadius;
<span style="color:blue for(<span style="color:blue int yp=-nYRadius; yp<=nYRadius; yp++){
<span style="color:blue for(<span style="color:blue int xp=-nXRadius; xp<=nXRadius; xp++){
<span style="color:blue float fCellX = (nXPos+xp+(xp>=0?1:0))*fXCellSize + m_fSX;
<span style="color:blue float fCellY = (nYPos+yp+(yp>=0?1:0))*fYCellSize + m_fSY;
<span style="color:blue float f2DLenPow = <span style="color:blue float(pow(fCellX-x, 2) + pow(fCellY-y, 2));
<span style="color:blue if(f2DLenPow>fRadiusPow) <span style="color:blue continue; <span style="color:green // ÃÃÃ ÃÃ ÃÃÃ ÃÃ Ã Ã Ã Ã Ã
<span style="color:blue int nX = nXPos+xp;
<span style="color:blue int nY = nYPos+yp;
<span style="color:blue if(nX<0 || nX>=m_nXDivision) <span style="color:blue continue;
<span style="color:blue if(nY<0 || nY>=m_nYDivision) <span style="color:blue continue;
MRefCell* pRefCell = &(m_pGridMap[nX+nY*m_nXDivision]);
<span style="color:blue for(MRefCell::iterator it=pRefCell->begin(); it!=pRefCell->end(); it++){
MITEM* pItem = &(*it);
<span style="color:blue float f3DLenPow = <span style="color:blue float(pow(pItem->x-x, 2)+pow(pItem->y-y, 2)+pow(pItem->z-z, 2));
<span style="color:blue if(f3DLenPow<=fRadiusPow){
pObjs->insert(pObjs->end(), pItem->Obj);
}
}
}
}
}
<span style="color:green /// Obj ÃÃ Ã ÃÃÃ ÃÃ ÃÃ
HREF Move(<span style="color:blue float x, <span style="color:blue float y, <span style="color:blue float z, _T Obj, HREF& hRef){
_ASSERT(hRef.pRefCell!=NULL);
_ASSERT((&(*hRef.RefIterator))->Obj==Obj);
MRefCell* pRefCell = GetCell(x, y);
<span style="color:green // à RefCellà Ãà à à à ÃÃÃà à à Ã.
<span style="color:blue if(pRefCell==hRef.pRefCell) <span style="color:blue return hRef;
<span style="color:green // ÃÃÃÃ ÃÃÃ ÃÃ Ã Ã
hRef.pRefCell->erase(hRef.RefIterator);
<span style="color:green // Ã Ã Ã ÃÃÃ Ã Ã
<span style="color:blue return Add(x, y, z, Obj);
}
<span style="color:green /// ÃÃÃ ÃÃÃ X
<span style="color:blue float GetSX(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_fSX; }
<span style="color:green /// ÃÃÃ ÃÃÃ Y
<span style="color:blue float GetSY(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_fSY; }
<span style="color:green /// ÃÃÃ X
<span style="color:blue float GetEX(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_fEX; }
<span style="color:green /// ÃÃÃ Y
<span style="color:blue float GetEY(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_fEY; }
<span style="color:green /// ÃÃÃ XÃÃ Ã Ã
<span style="color:blue float GetXSize(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_fEX-m_fSX; }
<span style="color:green /// ÃÃÃ YÃÃ Ã Ã
<span style="color:blue float GetYSize(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_fEY-m_fSY; }
<span style="color:green /// ÃÃÃ XÃÃ Ã
<span style="color:blue int GetXDivision(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_nXDivision; }
<span style="color:green /// ÃÃÃ YÃÃ Ã
<span style="color:blue int GetYDivision(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_nYDivision; }
<span style="color:green /// ÃÃÃ XÃÃ Ã Ã
<span style="color:blue float GetXDivisionSize(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return GetXSize() / (<span style="color:blue float)m_nXDivision; }
<span style="color:green /// ÃÃÃ YÃÃ Ã Ã
<span style="color:blue float GetYDivisionSize(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return GetYSize() / (<span style="color:blue float)m_nYDivision; }
<span style="color:green /// x, y à à Ãà à à Ã
MRefCell* GetCell(<span style="color:blue int x, <span style="color:blue int y){
<span style="color:blue if(x<0 || x>=m_nXDivision) <span style="color:blue return NULL;
<span style="color:blue if(y<0 || y>=m_nYDivision) <span style="color:blue return NULL;
<span style="color:blue return &(m_pGridMap[x+y*m_nXDivision]);
}
<span style="color:green /// ÃÃ Ã Ã Ã Ã
MRefCell* GetCell(<span style="color:blue int i){
<span style="color:blue if(i<0 || i>=m_nXDivision*m_nYDivision) <span style="color:blue return NULL;
<span style="color:blue return &(m_pGridMap);
}
<span style="color:green /// Ã Ã Ã
<span style="color:blue int GetCellCount(<span style="color:blue void){
<span style="color:blue return m_nXDivision*m_nYDivision;
}
<span style="color:green /// Ã Ã ÃÃ ÃÃ ÃÃ Ã
<span style="color:blue void ClearAllCell(<span style="color:blue void){
<span style="color:blue int nCellCount = GetCellCount();
<span style="color:blue for(<span style="color:blue int i=0; i<nCellCount; i++){
MRefCell* pRefCell = GetCell(i);
<span style="color:blue for(MMap::MRefCell::iterator it=pRefCell->begin(); it!=pRefCell->end(); it++){
MMap::MITEM* pItem = &(*it);
}
pRefCell->clear();
}
}
};
#endif
[/code]
<br/>
<br/>
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<span style="font-family:Arial <br/>
<br/>
View the full article
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<span style="font-family:Arial Error 23 error C2146: syntax error : missing ; before identifier RefIterator d:commonincludeMGridMap.h 31
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<span style="font-family:Arial Error 24 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int d:commonincludeMGridMap.h<span style="white-space

31
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
This project is originally to visual studio 2003.. and Im trying to update to visual studio 2010, but i have this error, Im beginner in C++ and I need to fix this project to continue my study.. I hope you guys can help me
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<span style="text-decoration:underline CODE::
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<div style="color:black; background-color:white
<pre>#ifndef MGRIDHASH_H
#define MGRIDHASH_H
#include <crtdbg.h>
#include <list>
#include <math.h>
<span style="color:blue using <span style="color:blue namespace std;
<span style="color:green /// x-y à à à à z à à à Ãà à Ãà à Ã
<span style="color:green /// - Ã
<span style="color:green /// - MGridMap<UserType>
<span style="color:green /// - Ã ÃÃ Ã ÃÃ /ÃÃ / ÃÃ
<span style="color:green /// - MGridMap<UserType>::HREF h = MGridMap<UserType>::Add(x, y, z, UserTypeObj);
<span style="color:green /// - MGridMap<UserType>::Move(x, y, z, UserTypeObj, h);
<span style="color:green /// - MGridMap<UserType>:

<span style="color:blue template<<span style="color:blue class _T>
<span style="color:blue class MGridMap{
<span style="color:blue public:
<span style="color:green /// Ã Ã ÃÃ ÃÃ ÃÃ Ã Ã Ã Ã UserData
<span style="color:blue struct MITEM
{
<span style="color:blue float x, y, z; <span style="color:green ///< Position
_T Obj; <span style="color:green ///< User Data Object
};
<span style="color:green /*********************/
list <<span style="color:blue int> c1;
list <<span style="color:blue int>::iterator c1_Iter;
list <<span style="color:blue int>::const_iterator c1_cIter;
<span style="color:green /*********************/
<span style="color:green /// x-yÃÃ Ã Ã ÃÃ Ã ÃÃ ÃÃ ÃÃÃ
<span style="color:blue class MRefCell : <span style="color:blue public list<MITEM>{};
<span style="color:green /// User Data Object ÃÃ Ã ÃÃÃ ÃÃ ÃÃ ÃÃ Ã
<span style="color:blue struct HREF
{
MRefCell* pRefCell;
MRefCell::iterator RefIterator;<span style="color:green // RefIterator;
};
<span style="color:blue protected:
MRefCell* m_pGridMap; <span style="color:green ///< Ã Ã Ã
<span style="color:blue float m_fSX; <span style="color:green ///< ÃÃÃ XÃÃ ÃÃÃÃ
<span style="color:blue float m_fSY; <span style="color:green ///< ÃÃÃ YÃÃ ÃÃÃÃ
<span style="color:blue float m_fEX; <span style="color:green ///< ÃÃÃ XÃÃ Ã
<span style="color:blue float m_fEY; <span style="color:green ///< ÃÃÃ YÃÃ Ã
<span style="color:green //float GetXSize(); ///< ÃÃÃ XÃÃ Ã Ã
<span style="color:green //float GetYSize(); ///< ÃÃÃ YÃÃ Ã Ã
<span style="color:blue int m_nXDivision; <span style="color:green ///< ÃÃÃ XÃÃ Ã
<span style="color:blue int m_nYDivision; <span style="color:green ///< ÃÃÃ YÃÃ Ã
<span style="color:blue protected:
MRefCell* GetCell(<span style="color:blue float x, <span style="color:blue float y){
<span style="color:blue int nXPos = <span style="color:blue int((x-m_fSX)/(GetXSize()/(<span style="color:blue float)m_nXDivision));
<span style="color:blue int nYPos = <span style="color:blue int((y-m_fSY)/(GetYSize()/(<span style="color:blue float)m_nYDivision));
<span style="color:green // Ã Ã
_ASSERT(nXPos>=0 && nYPos>=0);
<span style="color:blue if(nXPos>=m_nXDivision) <span style="color:blue return NULL;
<span style="color:blue if(nYPos>=m_nYDivision) <span style="color:blue return NULL;
<span style="color:blue return &(m_pGridMap[nXPos+nYPos*m_nXDivision]);
}
<span style="color:blue public:
MGridMap(<span style="color:blue void){
m_pGridMap = NULL;
}
<span style="color:blue virtual ~MGridMap(<span style="color:blue void){
Destroy();
}
<span style="color:green /// Ã Ã
<span style="color:green /// @param fSX ÃÃÃ XÃÃ ÃÃÃÃ
<span style="color:green /// @param fSY ÃÃÃ YÃÃ ÃÃÃÃ
<span style="color:green /// @param fXSize ÃÃÃ XÃÃ Ã Ã
<span style="color:green /// @param fYSize ÃÃÃ YÃÃ Ã Ã
<span style="color:green /// @param nXDivision ÃÃÃ XÃÃ Ã
<span style="color:green /// @param nYDivision ÃÃÃ YÃÃ Ã
<span style="color:green //void Create(float fSX, float fSY, float fXSize, float fYSize, int nXDivision, int nYDivision){
<span style="color:blue void Create(<span style="color:blue float fSX, <span style="color:blue float fSY, <span style="color:blue float fEX, <span style="color:blue float fEY, <span style="color:blue int nXDivision, <span style="color:blue int nYDivision){
m_pGridMap = <span style="color:blue new MRefCell[nXDivision*nYDivision];
m_fSX = fSX;
m_fSY = fSY;
m_fEX = fEX;
m_fEY = fEY;
<span style="color:green //GetXSize() = fXSize;
<span style="color:green //GetYSize() = fYSize;
m_nXDivision = nXDivision;
m_nYDivision = nYDivision;
}
<span style="color:green /// ÃÃÃ
<span style="color:blue void Destroy(<span style="color:blue void){
<span style="color:blue if(m_pGridMap!=NULL){
<span style="color:blue delete[] m_pGridMap;
m_pGridMap = NULL;
}
}
<span style="color:green /// ÃÃÃ ÃÃ
<span style="color:green /// @return ÃÃ Ã Ã ÃÃ Ã Ã HREF ÃÃÃ ÃÃ / ÃÃ Ã ÃÃÃ Ã ÃÃ Ã.
HREF Add(<span style="color:blue float x, <span style="color:blue float y, <span style="color:blue float z, _T Obj){
_ASSERT(x>=m_fSX && y>=m_fSY);
_ASSERT(x<=m_fEX && y<=m_fEY);
HREF hPos;
MRefCell* pCell = GetCell(x, y);
<span style="color:blue if(pCell==NULL){
hPos.pRefCell = NULL;
<span style="color:blue return hPos;
}
MITEM item;
item.x = x;
item.y = y;
item.z = z;
item.Obj = Obj;
hPos.RefIterator = pCell->insert(pCell->end(), item);
hPos.pRefCell = pCell;
<span style="color:blue return hPos;
}
<span style="color:green /// ÃÃÃ ÃÃ
<span style="color:blue void Del(HREF hRef){
_ASSERT(hRef.pRefCell!=NULL);
hRef.pRefCell->erase(hRef.RefIterator);
}
<span style="color:green /// Ãà à Obj à à Ã, Obj à à à à Ãà à Ãà à à ÃÃÃà à Ã.
<span style="color:blue void Get(list<_T>* pObjs, <span style="color:blue float x, <span style="color:blue float y, <span style="color:blue float z, <span style="color:blue float fRadius){
<span style="color:blue float fXCellSize = GetXSize()/(<span style="color:blue float)m_nXDivision;
<span style="color:blue float fYCellSize = GetYSize()/(<span style="color:blue float)m_nYDivision;
<span style="color:blue int nXPos = <span style="color:blue int((x-m_fSX)/fXCellSize);
<span style="color:blue int nYPos = <span style="color:blue int((y-m_fSY)/fYCellSize);
#define MORE_SEARCH 2
<span style="color:blue int nXRadius = <span style="color:blue int(fRadius/fXCellSize) + MORE_SEARCH;
<span style="color:blue int nYRadius = <span style="color:blue int(fRadius/fYCellSize) + MORE_SEARCH;
<span style="color:blue float fRadiusPow = fRadius*fRadius;
<span style="color:blue for(<span style="color:blue int yp=-nYRadius; yp<=nYRadius; yp++){
<span style="color:blue for(<span style="color:blue int xp=-nXRadius; xp<=nXRadius; xp++){
<span style="color:blue float fCellX = (nXPos+xp+(xp>=0?1:0))*fXCellSize + m_fSX;
<span style="color:blue float fCellY = (nYPos+yp+(yp>=0?1:0))*fYCellSize + m_fSY;
<span style="color:blue float f2DLenPow = <span style="color:blue float(pow(fCellX-x, 2) + pow(fCellY-y, 2));
<span style="color:blue if(f2DLenPow>fRadiusPow) <span style="color:blue continue; <span style="color:green // ÃÃÃ ÃÃ ÃÃÃ ÃÃ Ã Ã Ã Ã Ã
<span style="color:blue int nX = nXPos+xp;
<span style="color:blue int nY = nYPos+yp;
<span style="color:blue if(nX<0 || nX>=m_nXDivision) <span style="color:blue continue;
<span style="color:blue if(nY<0 || nY>=m_nYDivision) <span style="color:blue continue;
MRefCell* pRefCell = &(m_pGridMap[nX+nY*m_nXDivision]);
<span style="color:blue for(MRefCell::iterator it=pRefCell->begin(); it!=pRefCell->end(); it++){
MITEM* pItem = &(*it);
<span style="color:blue float f3DLenPow = <span style="color:blue float(pow(pItem->x-x, 2)+pow(pItem->y-y, 2)+pow(pItem->z-z, 2));
<span style="color:blue if(f3DLenPow<=fRadiusPow){
pObjs->insert(pObjs->end(), pItem->Obj);
}
}
}
}
}
<span style="color:green /// Obj ÃÃ Ã ÃÃÃ ÃÃ ÃÃ
HREF Move(<span style="color:blue float x, <span style="color:blue float y, <span style="color:blue float z, _T Obj, HREF& hRef){
_ASSERT(hRef.pRefCell!=NULL);
_ASSERT((&(*hRef.RefIterator))->Obj==Obj);
MRefCell* pRefCell = GetCell(x, y);
<span style="color:green // à RefCellà Ãà à à à ÃÃÃà à à Ã.
<span style="color:blue if(pRefCell==hRef.pRefCell) <span style="color:blue return hRef;
<span style="color:green // ÃÃÃÃ ÃÃÃ ÃÃ Ã Ã
hRef.pRefCell->erase(hRef.RefIterator);
<span style="color:green // Ã Ã Ã ÃÃÃ Ã Ã
<span style="color:blue return Add(x, y, z, Obj);
}
<span style="color:green /// ÃÃÃ ÃÃÃ X
<span style="color:blue float GetSX(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_fSX; }
<span style="color:green /// ÃÃÃ ÃÃÃ Y
<span style="color:blue float GetSY(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_fSY; }
<span style="color:green /// ÃÃÃ X
<span style="color:blue float GetEX(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_fEX; }
<span style="color:green /// ÃÃÃ Y
<span style="color:blue float GetEY(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_fEY; }
<span style="color:green /// ÃÃÃ XÃÃ Ã Ã
<span style="color:blue float GetXSize(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_fEX-m_fSX; }
<span style="color:green /// ÃÃÃ YÃÃ Ã Ã
<span style="color:blue float GetYSize(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_fEY-m_fSY; }
<span style="color:green /// ÃÃÃ XÃÃ Ã
<span style="color:blue int GetXDivision(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_nXDivision; }
<span style="color:green /// ÃÃÃ YÃÃ Ã
<span style="color:blue int GetYDivision(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return m_nYDivision; }
<span style="color:green /// ÃÃÃ XÃÃ Ã Ã
<span style="color:blue float GetXDivisionSize(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return GetXSize() / (<span style="color:blue float)m_nXDivision; }
<span style="color:green /// ÃÃÃ YÃÃ Ã Ã
<span style="color:blue float GetYDivisionSize(<span style="color:blue void) <span style="color:blue const { <span style="color:blue return GetYSize() / (<span style="color:blue float)m_nYDivision; }
<span style="color:green /// x, y à à Ãà à à Ã
MRefCell* GetCell(<span style="color:blue int x, <span style="color:blue int y){
<span style="color:blue if(x<0 || x>=m_nXDivision) <span style="color:blue return NULL;
<span style="color:blue if(y<0 || y>=m_nYDivision) <span style="color:blue return NULL;
<span style="color:blue return &(m_pGridMap[x+y*m_nXDivision]);
}
<span style="color:green /// ÃÃ Ã Ã Ã Ã
MRefCell* GetCell(<span style="color:blue int i){
<span style="color:blue if(i<0 || i>=m_nXDivision*m_nYDivision) <span style="color:blue return NULL;
<span style="color:blue return &(m_pGridMap);
}
<span style="color:green /// Ã Ã Ã
<span style="color:blue int GetCellCount(<span style="color:blue void){
<span style="color:blue return m_nXDivision*m_nYDivision;
}
<span style="color:green /// Ã Ã ÃÃ ÃÃ ÃÃ Ã
<span style="color:blue void ClearAllCell(<span style="color:blue void){
<span style="color:blue int nCellCount = GetCellCount();
<span style="color:blue for(<span style="color:blue int i=0; i<nCellCount; i++){
MRefCell* pRefCell = GetCell(i);
<span style="color:blue for(MMap::MRefCell::iterator it=pRefCell->begin(); it!=pRefCell->end(); it++){
MMap::MITEM* pItem = &(*it);
}
pRefCell->clear();
}
}
};
#endif
[/code]
<br/>
<br/>
<div style="color:#333333; font-family:Arial,sans-serif,Verdana; line-height:18px; text-align:left; padding:0px; margin:0px
<span style="font-family:Arial <br/>
<br/>
View the full article