Font* ResourceLoader::getFont(const std::string &name, int size) {
size = size;
//for(std::list<std::string>::iterator itr = mPaths.begin(); itr != mPaths.end(); itr++) {
//if(fileExists((*itr)+name)) {
std::string filename(name);
TTF_Font *font = TTF_OpenFont(filename.c_str(), size);
TTF_SetFontHinting(font, TTF_HINTING_MONO);
std::string err = std::string(TTF_GetError());
Font* result = new Font(font);
return result;
//}
//}
return NULL;
}
我的问题是“size”参数通过该方法被破坏了。这是它的样子
答案 0 :(得分:1)
关闭编译器优化并查看是否仍在进行此操作。
我的猜测是size
参数存储被编译器优化掉了,因为它没有在函数中使用,因此调试器会显示垃圾数据。
您可以尝试查看是否正在发生的事情是在每行后打印出函数中的size
参数
std::cout << "size at line " << __LINE__ << ": " << size << std::endl;
我敢打赌size
的价值会停止变化。
PS。我刚刚注意到你在其中一个函数调用中使用了size
。无论如何,尝试打印出它的价值。另外,为什么在函数顶部有size = size;
语句?你想用它做什么?
PPS。要解决您的访问冲突问题,请务必在尝试在下游使用它之前检查font
的值。