所以我为类编写了一个驱动程序,它使用一个菜单来测试不同的散列技术。我拥有的是一个抽象类“BaseHash”,其中包含所有虚函数和 5 个以不同方式散列的不同子类。当我这样做时:
while (numChoice!=0){
switch(numChoice){
case 1: myList= &MyHashContainer(myStudentList.getStudentList(),myStudentList.getStudentList().size(),p);break;
case 2: myList= &hash2(myStudentList.getStudentList(),myStudentList.getStudentList().size(),p);break;
case 3: myList= &chainingHash(myStudentList.getStudentList(),myStudentList.getStudentList().size(),p);break;
case 4: myList= &quadraticHash(myStudentList.getStudentList(),myStudentList.getStudentList().size(),p);break;
case 5: myList= &DoubleHash(myStudentList.getStudentList(),myStudentList.getStudentList().size(),p);break;
}
}
调用 main 时出现堆栈溢出错误。调试器甚至不让我在抛出错误之前迈出一步。
如果重要的话 myList 看起来像这样
BaseHash *myList;
如果我注释掉以 while 开头的代码,它不会抛出此错误。我什至不知道从哪里开始为什么会发生这种情况。