如何将派生类的指针传递给对基类的指针的引用?

hex*_*ecs 2 c++

这是示例代码。

class BaseClass {
};

class DerivedClass ? public BaseClass {
};

int Foo(BaseClass*& ptr) {
}

DerivedClass* ptr_to_derived;

//following will not work
Foo(ptr_to_derived);
Run Code Online (Sandbox Code Playgroud)

我无法编译上面的代码,并且错误消息为“ can't convert DerivedClass* to BaseClass*&”。那么如何将ptr_to_derived传递给Foo?

Som*_*ken 6

错误消息非常清楚:

错误:的类型的“非const引用无效初始化BaseClass*&”从类型的右值“ BaseClass*

因为Foo通过非常量引用获取指针,所以您不能将其传递给右值。从DerivedClass到的隐式转换BaseClass会在您将其传递给Foo您时得到,该值是错误所抱怨的。

您可以从派生的指针创建基本指针,然后传递该指针:

DerivedClass* ptr_to_derived;
BaseClass* ptr_derived_base = ptr_to_derived;

Foo(ptr_derived_base);
Run Code Online (Sandbox Code Playgroud)