我有一个关于使用基类指针...
分配派生类对象的问题class Base
{
void print() { cout<<"Class Base"; }
};
class Derived: public Base
{
void print() { cout<<"class Derived"; }
};
int main()
{
Base b, *bp;
Derived d, *dp;
b.print();
d.print();
bp = d; // why is this a conversion error? getting an error "cannot convert ‘Derived’ to ‘Base*’ in assignment"
bp = new B(); // this works fine...
}
这是否意味着我们只能将动态分配的派生类对象分配给基类指针?为什么会这样呢?
答案 0 :(得分:7)
bp
是一个指针,您正在尝试为其分配一个对象。请尝试分配该对象的地址:bp = &d;
答案 1 :(得分:0)
派生不是指针,它是一个对象。您需要获取该对象的地址以将其分配给指针(其中包含一个地址!):
bp = &d;
工作正常。