父类转子类,c++对象布局
来源:互联网 发布:北航软件学院是几系 编辑:程序博客网 时间:2024/05/01 23:09
1
TextView *textview = (TextView*)v.get();
sp<android::text::CharSequence> chars = textview->getText();sp<android::text::String> str = chars->toString();
2
android::sp<android::text::String> str = static_cast<android::text::String*>((static_cast<TextView*>(v.get()))->getText().get());
3
android::sp<android::text::String> str = (static_cast<TextView*>(v.get()))->getText()->toString();
CharSequence为String的父类,为抽象类,此处1和3等价,而1和2不等价,2的转换是错误的
原因是此处CharSequence的真实类型是SpannableStringBuilder,而非String,此处2用dynamic_cast也不可以,2个子类并不相互继承
因此遇到CharSequence,不能确定其真实类型的时候,绝对不要随便转换为你想要的类型,是它的子类,但不一定就是它的真实类型
sp<String> SpannableStringBuilder::toString() const
{
#if 0
int len = length();
//wchar_t buf[len];
char buf[len];
getChars(0, len, buf, 0);
//return *(new std::string(buf));// pay attention
std::string s1(buf);
return s1;
#else
return mText->toString();
#endif
}
sp<String> CharArray16::toString() const
{
char *utf8 = cn_utf16_to_utf8(mArray, mLength, NULL, NULL);
if (utf8 == NULL) {
return NULL;
}
sp<String> str = new String(utf8);
free(utf8);
return str;
}
- 父类转子类,c++对象布局
- 关于父类转子类例子
- 父类强转子类问题
- C++ 中 子类转父类 和 父类转子类 的方法 ---<C++Primer 5版>
- application 父类转子类出现异常问题
- 强转失败的情况,父类转子类。
- C++ 中【子类转父类】和【父类转子类】的方法
- C字节对齐与C++类对象内存布局
- C++类对象布局
- C++类对象布局
- 类对象 内存布局
- C++类对象内存布局
- 类的内存布局-sizeof(类对象)
- c++ 用布局NEW 管理类对象
- 关于类继承 与 对象布局
- C++派生类对象内存布局
- 普通类对象的内存布局
- C++类、结构对象内存布局浅析
- 从Objective-C到Swift,你必须会的(四)DLog
- 批处理---findstr命令详解
- org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter异常
- document.getElementById()方法使用
- 国家地区语言缩写码
- 父类转子类,c++对象布局
- codeforces 363B round211 div2 B. Fence
- 【安卓】Mac 中设置 android adb 环境变量
- 奇葩的"ora12638 身份证明检索失败"
- Poj1001
- 批处理--for命令详解
- 平衡二叉树
- 排列组合输出
- Memcached 集群架构方面的问题