私は、基本クラスを持っている:基本クラスは抽象クラスであり、派生クラスも抽象クラスです。
class CDigit
{
private:
int m_iDigit;
public:
CDigit()
{
m_iDigit = 0;
}
CDigit(const int digit)
{
m_iDigit = digit;
}
void setDigit(const int digit)
{
m_iDigit = digit;
}
int getDigit() const
{
return m_iDigit;
}
virtual void output(ostream &x) = 0;
virtual bool less(CDigit *pDigit) = 0;
};
と派生クラス
class CExpected : public CDigit
{
private:
int m_iExpFreq;
public:
CExpected() : CDigit()
{
m_iExpFreq = 0;
}
CExpected(const int dig, const int freq) : CDigit(dig)
{
m_iExpFreq = freq;
}
CExpected(const CExpected& ce)
{
m_iExpFreq = ce.m_iExpFreq;
this->setDigit(ce.getDigit());
}
void output(ostream &x)
{
x<<this->getDigit()<<" "<<this->m_iObsFreq;
}
bool less(CObserved *pDigit)
{
if((pDigit->getDigit() == this->getDigit()) && (pDigit->getObserved() == this->getObserved()))
return true;
else
return false;
}
...
};
問題はコンパイラがCExpectedは抽象クラスであり、私はそれをインスタンス化することができないことを私に伝えることです。私は間違って何をしていますか?
編集:私はそれらを実装していたが、あなたはoutput
とless
を実装していないここに
。 – Vikas
私は間違ってそれらを追加しませんでした:(申し訳ありません –
関連のないメモでは、あなたのクラスに 'C'(または関連する接頭辞)の接頭辞を付けることは絶対にありません。他のクラスとの曖昧さを解消するためにコンパイラが名前空間を理解していないときにMicrosoftが使用しましたが、それでも曖昧さをなくすことができないように、誰でも使用するつもりはありませんでした)。 –