虚拟功能未被覆盖

时间:2016-03-18 05:28:00

标签: c++ polymorphism virtual-functions

我无法弄清楚为什么我的虚拟功能没有被覆盖,在线查找示例时我无法发现我做错了什么,我一定是错过了什么。

基类

class HashTable {
// removed some unrelated functions and data to keep this page short

void Insert(int key, HashTable *htable)
    {
        int pos = Find(key, htable);
        if (htable->table[pos].info != Legitimate)
        {
            htable->table[pos].info = Legitimate;

            int rKey = Reverse(key);

            htable->table[pos].element = rKey;
        }
    }

virtual int Find(int key, HashTable *htable)
    {
        return 0;
    }
};

儿童班

class SingleHash : public HashTable {

     int Find(int key, HashTable *htable)
    {
        int hashVal = HashFunc1(key, htable->size);

        while (htable->table[hashVal].info != Empty &&
            htable->table[hashVal].element != key)
        {
            hashVal = hashVal;
            hashVal = hashVal % htable->size;

            prob = prob + 1;
        }

        trackProbes(prob);
        return hashVal;

    }
};

class DoubleHash : public HashTable {

     int Find(int key, HashTable *htable)
    {
        int hashVal = HashFunc1(key, htable->size);
        int stepSize = HashFunc2(key, htable->size);

        while (htable->table[hashVal].info != Empty &&
            htable->table[hashVal].element != key)
        {
            hashVal = hashVal + stepSize;
            hashVal = hashVal % htable->size;

            prob = prob + 1;
        }

        trackProbes(prob);
        return hashVal;

    }
};

我的主要是什么样的

int main()
{
int value, size, pos, i = 1;
    int choice = 1;

    HashTable *htable = new SingleHash;

    cin >> value;

    htable->Insert(value, htable);

    // more unrelated stuff   
}

当我运行我的程序时,它只是在我调用Insert时返回基类(0)中的内容。

1 个答案:

答案 0 :(得分:1)

您提供的代码中存在编译错误,例如未基于声明公开的函数。

我试图为你制作MCVE,它似乎工作得很好。

@Override
public String toString() {
    return (name + age);
}

输出结果为:

  

单一哈希查找

     

DOuble hash find