Malheureusement, j'ai toujours eu un problème avec mon code basé sur un modèle d'ici:C++ problème avec std :: pair et déclarations avant
C++ fancy template code problem
en ligne 49 dans le fichier 'utilitaire':
error C2440: 'Initializing': cannot convert from 'const int' to 'IntersectionData *'
error C2439: 'std::pair<_Ty1,_Ty2>::second': member could not be initialized
comment pourrais-je comprendre où est le problème? le seul endroit où j'utilise une paire avec « IntersectionData * » est ici:
#include "MRMaterialMatth.h"
#include "IntersectionData.h"
using namespace std;
struct IShaderMatth {
virtual ~IShaderMatth() {}
vector<pair<MaterialMatth,IntersectionData*> > traceCols;
};
et il n'y a pas d'autres erreurs du compilateur
comment puis-je suivre dans cette? // edit: l'utilitaire n'est pas mon code. il doit être de std .. le code de la ligne 49 ressemble à ceci:
template<class _Other1,
class _Other2>
pair(const pair<_Other1, _Other2>& _Right)
: first(_Right.first), second(_Right.second)
{ // construct from compatible pair
}
ligne 49 est la ligne du commentaire
Edit2: les seuls endroits où je change quelque chose au sujet du contenu de tracecols ressembler à ceci:
IntersectionData* iDataOut = NULL;
if(newIData_out!=NULL)
{
iDataOut = new IntersectionData(*iData);
}
traceCols->push_back(make_pair(MaterialMatth(),iDataOut));
et
if(traceCols){
traceCols->push_back(make_pair(MaterialMatth(), NULL));
}
et
if(traceCols)
{
(*traceCols)[traceCols->size()].second = new IntersectionData(*newIData);
}
est le problème? c'est un pointeur, donc je devrais être autorisé à créer une paire avec NULL, non ??
À la ligne 49? –
Qu'est-ce que la ligne 49 d'utilitaire, et où d'autre utilisez-vous traceCols? – Smashery