不幸的是,我的模板代码仍然存在问题:
在文件“实用程序”的第 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 行是注释的行
编辑2:我改变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 对,不是吗?