我有這個簡單的類(Alpha)和他的抽象類(Beta)。我無法將Alpha(Beta)對象傳遞給overwrite()函數,因爲抽象類不能處理自我類型對象。C++ - 「不能聲明參數'匿名'爲抽象類型'
#include <iostream>
using std::cout;
using std::endl;
using std::ostream;
class Beta {
public:
virtual int read() const = 0;
virtual void write(int) = 0;
virtual void overwrite(Beta) = 0; // <-- This is the problem
};
class Alpha : public Beta {
public:
int read () const;
void write (int);
void overwrite(Alpha);
private:
int value;
};
int Alpha::read() const {
return value;
}
void Alpha::write(int v) {
value = v;
}
void Alpha::overwrite(Alpha A) {
value = A.value;
}
int main() {
Alpha A, B;
A.write(8);
B.write(6);
cout << "A: " << A.read() << endl; // 8
cout << "B: " << B.read() << endl; // 6
A.overwrite(B);
cout << endl << "A: " << A.read(); // 6
return 0;
}
它給我[Error] cannot declare parameter '<anonymous>' to be of abstract type 'Beta'
。如何處理它?這是一個小代碼示例,但我需要解決這個問題,因爲我不能重載運算符並正確聲明這種類型的函數。
我做到了,它顯示了一個不同的錯誤: 無法將變量'A'聲明爲抽象類型'Alpha',因爲以下虛擬函數在'Alpha'中是純的:virtual void Beta :: overwrite(Beta& – AndroidGuy
@AndroidGuy如果你沒有改變'Alpha :: overwrite'的簽名,那麼我就告訴你會發生什麼。 – CoryKramer
對不起,我沒有得到它。 – AndroidGuy