К сожалению, у меня все еще есть проблема с моим шаблонным кодом:
Необычная проблема кода шаблона C ++
в строке 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;
};
и других ошибок компилятора нет
как я могу отследить это?
// edit: утилита не мой код. он должен быть от 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:
единственные места, где я могу что-то изменить в содержании трассировок, выглядят так:
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, нет ??