我有这个简单的类(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