【发布时间】:2015-09-11 03:54:07
【问题描述】:
我有这个简单的类(Alpha)和他的抽象类(Beta)。我无法将 Alpha (Beta) 对象传递给 overwrite() 函数,因为抽象类无法处理自类型对象。
#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'。如何处理?这是一个小代码示例,但我需要解决这个问题,因为我无法重载运算符并正确声明该类型的函数。
【问题讨论】:
标签: c++ class inheritance abstract