不幸的是我還接到了在這裏與我的模板代碼的問題:C++問題的std ::對,前置聲明
C++ fancy template code problem
上的文件「實用工具」中的第49行:
error C2440: 'Initializing': cannot convert from 'const int' to 'IntersectionData *'
error C2439: 'std::pair<_Ty1,_Ty2>::second': member could not be initialized
我怎麼能找出問題出在哪裏?我用「IntersectionData *」一對的唯一的地方是在這裏:
#include "MRMaterialMatth.h"
#include "IntersectionData.h"
using namespace std;
struct IShaderMatth {
virtual ~IShaderMatth() {}
vector<pair<MaterialMatth,IntersectionData*> > traceCols;
};
,並沒有任何其他的編譯器錯誤
我怎麼能追蹤到這一點?
//編輯:實用程序不是我的代碼。它必須是由STD ..線49的代碼如下所示:
template<class _Other1,
class _Other2>
pair(const pair<_Other1, _Other2>& _Right)
: first(_Right.first), second(_Right.second)
{ // construct from compatible pair
}
線49是註釋的行
EDIT2: 在那裏我改一下tracecols的內容的時候,唯一的地方是這樣的:
IntersectionData* iDataOut = NULL;
if(newIData_out!=NULL)
{
iDataOut = new IntersectionData(*iData);
}
traceCols->push_back(make_pair(MaterialMatth(),iDataOut));
和
if(traceCols){
traceCols->push_back(make_pair(MaterialMatth(), NULL));
}
和
if(traceCols)
{
(*traceCols)[traceCols->size()].second = new IntersectionData(*newIData);
}
是NULL的問題?它是一個指針,所以我應該被允許創建一個NULL對,沒有?
什麼是第49行? – 2009-12-16 01:55:32
實用程序的第49行是什麼,以及您使用traceCols的其他位置? – Smashery 2009-12-16 01:56:04