我在将父指针指定给父指针时遇到问题。这是一个例子:
class A() {};
class B() : public A {};
class C() {
B* b;
C() { b = new B(); }
B* GetB() { return b; }
}
C* c = new C();
A* a = c->GetB(); //compilation error
为什么会这样?如果我写这个:
A* a = (A*)c->GetB();
然后它有效,但我想知道为什么会这样。
这只是一个例子,我无法透露真实的代码,所以如果你发现语法错误,那是因为我刚刚编写了它。谢谢!
编辑: 我的编辑告诉我:“类型B *的值不能分配给A *类型的实体”。这是什么意思?
答案 0 :(得分:1)
这只是一个例子,我无法透露真实的代码,所以如果你发现语法错误,那是因为我刚刚编写了它。谢谢!
您不应该太懒,不能提供实际上与您的问题类似的正确示例。 在MSVC 2012中使用正确的C ++语法,我没有得到任何编译错误。
class A // why () ?!
{
};
class B : public A
{
};
class C
{
private:
B* b;
public: // missing
C (void) : b(new B) { }
B * get_b() { return b; }
}; // missing ";"
int main(void)
{
C* c = new C;
A* a = c->get_b(); // no compilation error
return 0;
}
为什么你的编辑告诉你,由于你没有告诉我们你正在使用哪个编辑器,你不能分配不是很明显。