我有一個抽象類,我從繼承。爲了說清楚 - 我在繼承者中實現了所有的抽象方法。不能從繼承類調用析構函數
在完成使用由繼承者類構造的對象之後,即時試圖破壞它,但不是調用繼承的析構函數,而是將它發送給抽象方法。
我PROGRAMM它看起來像這樣
class LinkedHash {
private:
LinkedHashEntry **table;
int max_size;
public:
/* Creates a hashtable of size maxSize*/
LinkedHash(int);
LinkedHash(){}
/* deletes all members of the hashtable */
virtual ~LinkedHash();
virtual int hashFunction(int key) = 0;
void insert(int key, Process* value);
void remove(int key);
int getMaxSize(){return max_size;}
LinkedHashEntry* search(int x);
};
class LinkedHashinheritor: public LinkedHash {
public:
LinkedHashinheritor():LinkedHash(1000){}
int hashFunction(int key);
};
這是我的cpp文件的相關代碼:
int LinkedHashinheritor::hashFunction(int key)
{
return key%1000;
}
,並有用於構造函數和析構函數相關的對象調用:
Scheduler::Scheduler()
{tmp_lh=new LinkedHashinheritor();}
Scheduler::~Scheduler()
{
delete tmp_lh;
}
有你提供了一個實現你的你有沒有爲你的派生類提供析構函數? – SomeWittyUsername
你是否嘗試過對項目進行完全重建?有時候,如果頭文件發生變化(例如,通過向類中添加新的虛擬方法)和源文件包括那個頭文件沒有得到重新編譯 –
是的,當然 - 我的基本析構函數是實現的,我甚至沒有爲我的派生類聲明desructor,它應該由編譯器自動調用,不是嗎? –