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如何把一个父类转自类?

解决方案 »

  1.   

    转换只是针对指针的转换  你这个static_cast<LayerBuffer::BufferSource>(source);
    是构造函数的调用了 。
      

  2.   

    个人观点:
    你既然用了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>
      

  3.   

    既然是C++ 父类转子类问题, 标题为什么要加一个android ??