我有4個C++文件,2個頭文件和2個.cc文件。這只是一個概念的證明,但我似乎無法做到。C++中的抽象類和純虛擬方法
我的第一個標題是這樣的:
#ifndef INT_LIST_H
#define INT_LIST_H
class IntList
{
public:
//Adds item to the end of the list
virtual void pushBack(int item) = 0;
};
#endif
我的第二個報頭使用第一,看起來像這樣:
#ifndef ArrayIntList_H
#define ArrayIntList_H
#include "IntList.h"
class ArrayIntList : public IntList
{
private:
int* arrayList;
int* arrayLength;
public:
//Initializes the list with the given capacity and length 0
ArrayIntList(int capacity);
//Adds item to the end of the list
virtual void pushBack(int item) = 0;
};
#endif
我的第一個.cc文件填寫在前面類的方法:
#include <iostream>
#include "ArrayIntList.h"
ArrayIntList::ArrayIntList(int capacity)
{
//make an array on the heap with size capacity
arrayList = new int[capacity];
//and length 0
arrayLength = 0;
}
void ArrayIntList::pushBack(int item)
{
arrayList[*arrayLength] = item;
}
這是我的主要功能:
#include <iostream>
#include "ArrayIntList.h"
int main(int argc, const char * argv[])
{
ArrayIntList s(5);
}
當我在Xcode中運行它時,出現「變量ArrayIntList是抽象類」的錯誤 我不明白這是怎麼回事,因爲我在上面的.cc文件中定義了它。有任何想法嗎?
賓果遊戲,你是一個生命的救星。你能解釋爲什麼嗎? – tknickman
你打敗了我,完美。謝謝! – tknickman
純粹的方法只是繼承類中實現的「承諾」。將0賦給函數聲明聲明它是「純的」。如果你嘗試用純方法實例化一個類,你會得到一個編譯器錯誤。 – imreal