2
template<typename Wcf, typename Wdb>
void ComputeGenericDropCount(const function<void(Wdb *, int)> &func)
{
Wcf::ForEach([&](Wcf *wcf) {
Wdb *wdb = Wdb::Find(wcf->sourceId); // <--- ERROR
// error C2653: 'Wdb' : is not a class or namespace name
if(wdb)
func(wdb, wcf->itemCount);
});
}
這很奇怪,因爲它似乎「看」 Wcf
沒有問題裏面,我甚至用它:wcf->itemCount
。模板類型不是「看到」由編譯器拉姆達
是否有任何解決方法或原因,爲什麼發生這種情況?
它會識別wcf,因爲它是通過引用傳遞給您的lambda的參數。不是嗎?然而,由於`Wdb :: Find`似乎是一個公共的靜態函數,它沒有看到任何理由不能在lambda體中使用。你能否確認`Wdb :: Find`是類Wdb的一個公共靜態函數,我的意思是你實例化你的模板的那個? – 2010-12-01 16:59:33
我想你應該在微軟VC2010 ++論壇上提出這個問題,它可能是一個bug。 – ronag 2010-12-01 17:07:52