そこで、メニューを使用してさまざまなハッシュ手法をテストするクラス用のドライバーを作成しました。私が持っているのは、すべての仮想関数と、さまざまな方法でハッシュする5つの異なる子クラスを持つ抽象クラス「BaseHash」です。私がこれをするとき:
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が呼び出された瞬間にスタックオーバーフローエラーが発生します。デバッガーでは、エラーをスローする前に1つのステップを実行することさえできません。
重要な場合、myListは次のようになります
BaseHash *myList;
whileで始まるコードをコメントアウトしても、このエラーはスローされません。なぜこれが起こるのか、どこから始めればよいのかさえわかりません。