沉默流星 发表于 2025-5-2 17:33:16

当封装一个类为普通的和一个指针的如何整

问题如下:
当封装的类有时调用是普通的类有时是指针类应该如何做?

原生代码
AcGeLineSeg2d line, * pLine;在官方手册中 别名类型为本地参考类型则为指针进行访问。那么好了。如果定义两个别名类,他们的类型必须都是本地参考类型,火山语法不允许一个类为本地类,一个为本地参考类型。

而要实现指针又必须使用本地参考类型,那么火山官方库当中我只找到一个 本地结构指针模板 他的类型是本地参考这样就可以实现一个为普通一个为指针。代码如下图所示


但这样做涉及到一个问题就是,类的属性是默认私有的,结构体属性默认为公开的。
当然可以自己实现一个本地参考模板来实现。但我问的是火山官方库有没有对应类的本地参考类型用来让实现指针的类进行继承。

沉默流星 发表于 2025-5-2 17:59:28

这种方式好像不行,因没有继承关系,就算@模板实现类来实现不是指针的类,那么调用时也是没办法调用的。

难道只能指针的和不是指针的函数都写一遍嘛。

hcwanz 发表于 2025-5-2 18:06:57

说的有点绕我没太看懂, 但有个比较笨的解决办法.

指针类定义一个`取`方法, 用这个方法返回对象别名类, 然后操作这个返回的对象

指针变量.取().对象函数()

hcwanz 发表于 2025-5-2 18:13:04

然后还有个进化一些的方案(就是不知道行不行).

把`取`换成`_`, 然后设置为属性读, 这样指针操作就应是:

指针变量._.对象函数()

体验上应该和c的`->`差不多了

沉默流星 发表于 2025-5-2 18:16:26

我的意思是这样的

假设有个 类 为A

封装时,封装一个普通的类,也就是不是指针类型的。然后再定义一个类实现的是A类的指针。


调用时,普通类也可以用,指针类也可以调用普通类中的方法。

Xelloss0618 发表于 2025-5-2 18:35:49

没有那么方便的,因类调用成员用点,指针调用成员用->
你还是得封装两个。

你可以在指针了写个属性读方法 "值",里面将指针解引用为对象,调用就这样:

指针变量.值.成员方法()

沉默流星 发表于 2025-5-2 18:47:23

Xelloss0618 发表于 2025-5-2 18:35
没有那么方便的,因类调用成员用点,指针调用成员用->
你还是得封装两个。



是这样嘛,我感觉不对啊

Xelloss0618 发表于 2025-5-2 18:57:18

沉默流星 发表于 2025-5-2 18:47
是这样嘛,我感觉不对啊

https://bbs.voldp.com/thread-20901-1-1.html
页: [1]
查看完整版本: 当封装一个类为普通的和一个指针的如何整