c++调试出现undeclared identifier
#include "StdAfx.h"
#include "edgedetection.h"
#include <assert.h>
#include <math.h>
const int cnt_direction[8][2] = {{0, -1}, {1, -1}, {1, 0}, {1, 1},
{0, 1}, {-1, 1}, {-1, 0}, {-1, -1}};
//const POINT cnt_directionStep[8] = {{},
//};
CEdgeDetection::CEdgeDetection(void)
: m_pDataBuf(0)
, m_iHeight(0)
, m_iWidth(0)
, m_pEdge(0)
, m_iRegion(0)
{
RenewEdgePropertyArray();
}
CEdgeDetection::~CEdgeDetection(void)
{
SAFE_DELETE_ARRAY(m_pDataBuf);
SAFE_DELETE_ARRAY(m_pEdge);
}
// 重新初始化边界属性数组
void CEdgeDetection::RenewEdgePropertyArray(void)
{
for(int i = 0; i < IRIGIONNUMBER; i++)
{
ZeroRegionproperty(m_pRegionP[i]);
}
m_iRegion = 0;
}
// 初始化数据区,如果数据区大小没有变,则只填充数据区
//同时初始化边界检测的结果
void CEdgeDetection::SetDataBuf(LPBYTE pInData, int iInDataBits, int iHeight, int iWidth)
{
assert(pInData);
int iSizeData = iHeight * iWidth;
if(m_iHeight != iHeight || m_iWidth != iWidth)
{
SAFE_DELETE_ARRAY(m_pDataBuf);
SAFE_DELETE_ARRAY(m_pEdge);
m_iHeight = iHeight;
m_iWidth = iWidth;
//iSizeData = m_iHeight * m_iWidth;
m_pDataBuf = new BYTE[iSizeData];
m_pEdge = new BYTE[iSizeData];
}
assert(m_pDataBuf);
assert(m_pEdge);
for(int i = 0; i < iSizeData; i++)
{
m_pDataBuf[i] = *pInData;
pInData += iInDataBits;
}
memset(m_pEdge, 0, iSizeData);
}
// 边界检测后的数据区
LPBYTE CEdgeDetection::GetEdgeBuf(void)
{
return LPBYTE(m_pEdge);
}
// 提供模糊检测的边界结果
LPBYTE CEdgeDetection::FuzzyEdge(int iEnhanceTimes, double dbMemershipC)
{
int iSizeData = m_iHeight * m_iWidth;
double* pMemershipArray = new double[iSizeData];
assert(pMemershipArray);
memset(pMemershipArray, 0, iSizeData * sizeof(double));
//计算隶属度矩阵
CalcMembership(pMemershipArray);
//非线性增强隶属度矩阵,增强次数iEnhanceTimes
for(int i = 0; i < iEnhanceTimes; i++)
NonlinearEnhance(pMemershipArray, iSizeData, dbMemershipC);
// 从隶属度映射到空间域,结果于m_pEdge中
ReverseMemership(pMemershipArray);
//计算边界
CalcEdges();
////归一化边界
//StandEdge();
return LPBYTE(m_pEdge);
}
这是我程序中的一部分,可是编译后出现:
EdgeDetection.cpp(22) : error C2065: 'SAFE_DELETE_ARRAY' :undeclared identifier
这是怎么回事呢?谁能告诉我一下啊!!