【发布时间】:2013-05-15 20:14:52
【问题描述】:
我有一个const std::map<const wchar_t*, const char*>,它位于全局命名空间中。它看起来像这样:
.h 文件
typedef std::map<const wchar_t*, const char*> ShaderMap;
const ShaderMap::value_type rawShaderData[] = {
ShaderMap::value_type( L"BasicShader_Vertex",
"..."
),
);
const int ElementCount = 2; //Length of rawShaderData
extern ShaderMap ShaderProgramsMap;
.cpp 文件
ShaderMap ShaderProgramsMap = ShaderMap( rawShaderData, rawShaderData + ElementCount );
我正在尝试在我的代码中的其他地方访问它,如下所示:
std::wstring shaderKey = std::wstring( name + L"_Vertex" );
...
pShaderData = ShaderProgramsMap[shaderKey.c_str()];
使用调试器,shaderKey 是“BasicShader_vertex”,但 pShaderData 是 NULL。将std::wstring::c_str 的值与const wchar_t* 的值进行比较是有问题还是代码中的其他地方有问题?
【问题讨论】:
-
任何理由使用 std::map
代替 std::map<:wstring std::string> ? -
哦,名字的类型是什么?