![]() |
1
1
在没有熟知Symbian习惯用法的情况下,尝试将Symbian OS C++移植到标准C++是一个坏主意。 这很可能是这些项目中的一个,正确的做法是从头重写大部分代码。如果你几乎不知道你要使用的语言,那就没什么必要去欺骗自己,让自己认为你不会犯错误,浪费时间,并且无论如何都会扔掉新的代码。这是学习的一部分。 cleanupstack机制旨在帮助您处理任何可能出错的问题,包括断电和内存不足的情况。从技术上讲,现在,它被实现为C++异常,但它覆盖了通常C++标准代码通常处理的常见错误情况。 描述符(TDESC、TBUF和HBUF都属于描述符类层次),模板(数组、队列、列表…)在标准C++中预处理它们的等价物,同时处理诸如清理堆栈、编码标准、内存管理和完整性等问题。 如果您想了解相关的插件: Quick Recipes On Symbian OS 是最近一次试图用尽可能少的几页来解释这一切的尝试。 你也应该看看 Foundation 网站开始。 前缀为t的类本身就足够小,可以在堆栈上分配它们。 后缀为c的描述符类是不可变的(不过,通常可以从中创建可变的描述符)。 hbufc几乎是唯一一个前缀为h的symbian类。它应该总是在堆上分配。 C后缀的方法将在成功返回时在cleanupstack上添加一个对象(通常是它返回的对象)。由调用代码来弹出该对象。 前缀为r的类将在堆栈上分配,但要管理自己的基于堆的资源。它们通常有某种close()方法,需要在其析构函数之前调用。 处理对象集合和指向对象的指针集合之间差异的典型方法是谁拥有集合中的对象。集合在添加对象时拥有这些对象,在删除对象时将其释放(因此,当对象本身被销毁时,负责删除它仍然包含的每个对象),或者集合不传输所有权,而其他一些内容必须确保它包含的对象在集合的生存期内保持有效。 考虑集合的另一种方法是,在集合中添加/获取对象时,要复制多少对象。 Symbian描述符和集合类旨在涵盖所有这些使用内存的不同方法,并允许您根据自己的需要选择所需的方法。 正确的操作当然不容易,但这就是这个操作系统的工作原理。 |
![]() |
2
3
我不确定您是否仍然感兴趣,但有一种可能是,在使用euser.dll的symbian习惯用法(即,tdec派生类、rpointer*等)中,您可能会发现从symbian开发人员站点获取开放源代码epl,并将其直接添加到端口中是一个可行的选项。那是尤瑟必要部分的港口(也许还有其他部分?). 但是,如果您当前的代码库已经使用了许多其他的子系统,那么您将看到这变得非常难以处理。 |
![]() |
3
2
您应该尝试阅读一些有关Symbian开发的介绍性文本。他们以前在Symbian网站上有一些例子,我相信您可以找到具体的文档,说明您想要的类型是如何使用的,以及它们提供了什么。 问题在于,Symbian开发有自己的习惯用法,不能/不应该直接在Symbian环境之外使用,例如,在编译器具有适当异常处理机制的环境中,使用清理堆栈的两阶段构造是不需要的——在Symbian中,抛出的构造函数可以导致各种类型的混乱的 |
![]() |
4
2
如果这不是一个非常大的代码库,那么从头开始做任何Android风格的事情可能会更容易/更快。即使你需要
另一种方法可能是使用便携式
|
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |