当前位置:编程学习 > wap >>

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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,