【发布时间】:2017-09-17 20:08:27
【问题描述】:
我无法理解我做错了什么。我收到错误:上述行从 A* 到 B* 的无效转换:
B *p3=new A(p2->operator+(*p1));
这是完整的代码。
#include <iostream>
using namespace std;
#include <iostream>
using namespace std;
class A
{
protected: int x;
public: A(int i=-31) {x=i;}
virtual A operator+(A a) {return x+a.x;}
};
class B:public A
{
public:B(int i=12) {x=i;}
B operator+(B b) {return x+b.x+1;}
void afisare() {cout<<x;}
};
int main()
{
A *p1=new B, *p2=new A;
B *p3=new A(p2->operator+(*p1));
p3->afisare();
//cout << "Hello world!" << endl;
return 0;
}
【问题讨论】:
-
A不是B那么您期待什么?您不能将A分配给B类型的指针。 -
好的,我明白你在说什么,但你如何纠正它?
-
改为创建
B。 -
int main() { A *p1=new B, *p2=new B; B *p3=new B(p2->运算符+(*p1)); p3->afisare(); //cout
标签: c++ pointers inheritance