我尝试了以下代码示例,但 A* aa = c; 不编译。为什么不调用转换运算符?没有指针的相同示例有效。所以我不知道为什么C必须从A继承?谢谢你的帮助。
编辑:我知道这样的编码是没有意义的。但我只想了解转换的东西。
#include <iostream>
using namespace std;
class A {
public:
int mValue = 0;
};
class B : public A{
public:
operator A*() {
return this;
}
};
class C {
public:
operator A*() {
return new A();
}
};
int main(int argc, char* argv[])
{
B* b = new B();
A* a = b;
C* c = new C();
A* aa = c;
}