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