0

在下面的代码中,set_black_hole()从不调用。为什么?

set_black_hole()我在和中添加了小字语句set_data()Set_data()按预期被重复调用,但从set_black_hole()未被调用。当我在调用 for 之前运行调试器并设置断点时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);
   }

}
4

1 回答 1

1

您是否尝试过重新编译/重建项目?我之前在 Visual Studio 中遇到过这个问题,当时我在调试时项目引用了旧版本,因为在 Visual Studio 中意外关闭了“运行前构建”选项。一个很好的迹象是,如果您在调用的行上设置了一个断点set_black_hole(),并且当您尝试调试时断点变得透明。

于 2013-03-03T02:09:32.680 回答