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如何把一个父类转自类?
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如何把一个父类转自类?
是构造函数的调用了 。
你既然用了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>