在以下代码中,永远不会调用set_black_hole()
。为什么呢?
我向set_black_hole()
和set_data()
添加了小字体。 Set_data()
会按预期重复调用,但永远不会调用set_black_hole()
。当我在调用set_black_hole()
之前运行调试器并设置断点时,它只是跳到它后面的if()语句。
思想?
这是模板特定问题吗?
/******************************************************************
* build_list
* add new items to the list until input is exhausted
*/
template <typename T>
void List<T>::build_list(ifstream &fin)
{
T *pT;
bool readSuccess; // successful read of object data
bool storeSuccess; // successful node addition
pT = new T;
readSuccess = pT->set_black_hole(fin); // fill the T object
if (readSuccess) {
storeSuccess = add_node(pT);
}
while (true)
{
storeSuccess = false;
readSuccess = pT->set_data(fin); // fill the T object
if (fin.eof())
{
delete pT;
break;
}
// insert object data into the list
if (readSuccess)
storeSuccess = add_node(pT);
else // something bad happened during node setup
{
delete pT;
fatal_err(BAD_SET_DATA);
}
if (!storeSuccess) // something bad happened during store
fatal_err(BAD_ADD_NODE);
}
}
答案 0 :(得分:1)
您是否尝试过重新编译/重建项目?我之前在Visual Studio中遇到过这个问题,当我在调试时项目引用旧版本时,因为在Visual Studio中意外切换了“在运行之前构建”选项。如果您在调用set_black_hole()
的行上设置断点,则可以很好地指示这一点,并且当您尝试调试时,断点将变为透明。