gpt4 book ai didi

c++ - 错误 : invalid initialization of reference of type ‘LineLayer&’ from expression of type ‘Layer’

转载 作者:行者123 更新时间:2023-11-28 02:43:39 25 4
gpt4 key购买 nike

我的编译器提示这一行:

LineLayer& lastLayer = *this->layers.back();

error: invalid initialization of reference of type ‘LineLayer&’ from expression of type ‘Layer’

所以他说,他不能从 *this->layers.back() 初始化 LineLayer& lastLayer 引用,它是 Layer* 对象的 vector (LineLayer 的基类) .



取消引用指针并将其分配给子类的引用不应该吗?






最佳答案





可以做到,但不能隐式。这是为了保护您免受意外转换的影响,因为并非每个 Layer 都是 LineLayer。要在您确定它有效时执行此转换,请使用 static_cast:



LineLayer& lastLayer = static_cast<LineLayer&>(*this->layers.back());

如果您不确定Layer 是否是LineLayer,请使用dynamic_cast。如果不是,这将抛出 std::bad_cast

LineLayer& lastLayer = dynamic_cast<LineLayer&>(*this->layers.back());

从另一种方式——从派生到基础——不需要强制转换,并且是隐式执行的,因为它是一种安全的转换。

关于c++ - 错误 : invalid initialization of reference of type ‘LineLayer&’ from expression of type ‘Layer’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25098455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com