首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

STL中sort的谓词函数内部怎样使用外部变量?该如何处理

2012-04-19 
STL中sort的谓词函数内部怎样使用外部变量?问题是这样的,我定义一个sort的谓词,这个谓词内部需要使用谓词

STL中sort的谓词函数内部怎样使用外部变量?
问题是这样的,我定义一个sort的谓词,这个谓词内部需要使用谓词函数外部的一个变量,怎样实现?

代码像这样:

bool CGameEngine_MySceneManage::cmpVisList(CSenceNode*a, CSenceNode*b)
{
//从世界矩阵中获取坐标
D3DXMATRIX world1,world2;
world1 = a->GetWorld();
world2 = b->GetWorld();
D3DXVECTOR3 pos1,pos2;
pos1 = D3DXVECTOR3(world1(3,0),world1(3,1),world1(3,2));
pos2 = D3DXVECTOR3(world2(3,0),world2(3,1),world2(3,2));

float d1 = D3DXVec3LengthSq(&(pos1-CGameEngine_MySceneManage::m_cameraPos));
float d2 = D3DXVec3LengthSq(&(pos2-CGameEngine_MySceneManage::m_cameraPos));
return d1 < d2;
}

问题出在 CGameEngine_MySceneManage::m_cameraPos 这个变量上,m_cameraPos就是那个在谓词

函数的外部的需要使用的变量,它在类 CGameEngine_MySceneManage 中定义为 static 型,这个谓

词函数也是static的,调用这个谓词函数是这样的:

m_listVisible.sort(CGameEngine_MySceneManage::cmpVisList);

链接出现的错误提示是:

GameEngine_MySceneManage.obj : error LNK2001: 无法解析的外部符号 "public: static struct D3DXVECTOR3 

CGameEngine_MySceneManage::m_cameraPos" (?m_cameraPos@CGameEngine_MySceneManage@@2UD3DXVECTOR3@@A)

该怎样解决呢?

又或者是否能将 m_cameraPos 作为sort的谓词函数的一个参数传入呢?就像 find_if 的一元谓词那样,可又该怎么写呢?

期待答案。。。大侠帮帮忙啊。。。



[解决办法]
楼主请参考
bind1st,bind2nd,men_fun

热点排行