android C++ 父类转子类问题?
sp<LayerBuffer::Source> source = layer->getSource();sp<LayerBuffer::BufferSource> buffer_Source = static_cast<LayerBuffer::BufferSource>(source);
BufferSource是Source的子类,现在我想把它的转成子类去调用子类的方法。
make的时候报错:no matching function for call to 'android::LayerBuffer::BufferSource::BufferSource(android::sp<android::LayerBuffer::Source>&)'
在android如何把一个父类转自类? --------------------编程问答-------------------- 如果基类方法重载了的 直接用基类应该可以调用的吧?! --------------------编程问答-------------------- 我理解,一般情况下,子类可以转化为父类;
但父类转化为子类,是需要子类定义相应的构造函数的。
--------------------编程问答-------------------- 转换只是针对指针的转换 你这个static_cast<LayerBuffer::BufferSource>(source);
是构造函数的调用了 。 --------------------编程问答-------------------- 个人观点:
你既然用了sp<T>这个智能指针,这样转应该是不对的,你可以在你子类里面加一个方法
类似于这样:
static T dynamicCast(LayerBase* base) {
uint32_t mostDerivedInfo = base->getTypeInfo();
uint32_t castToInfo = getTypeInfoOfAnyType<T>::get();
if ((mostDerivedInfo & castToInfo) == castToInfo)
return static_cast<T>(base);
return 0;
}
或者放弃使用sp<T> --------------------编程问答-------------------- 既然是C++ 父类转子类问题, 标题为什么要加一个android ??
补充:移动开发 , Android