递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 22437|回复: 33
打印 上一主题 下一主题

[视窗] ★★★火山PC的参考(不知道怎么叫,C++是叫指针)★★★

[复制链接]

24

主题

353

帖子

1706

积分

金牌会员

Rank: 6Rank: 6

积分
1706
跳转到指定楼层
楼主
发表于 2024-4-6 14:16:26 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
  • 程序中定义了几十个窗口, 程序启动时候就需构造要全部窗口类, 窗口类里面会使类对象(比如Curl类或自定义类), 那么也要构造, 想想如果是个大工程, 一开始连个窗口都没显示呢, 就构造这么多东西了,窗口不创建也没必要去构造对不对, 虽说现在CPU强劲, 内存量大, 也不能这么浪费吧
  • 从一个数组中取个成员放到局部变量操作时, 这个成员如果是类对象, 放到局部变量后只是个复制品, 我们操作这个局部变量是修改不了那个成员的对象数组的成员,想要挂接事件、调用函数、修改成员都要给成员取出来,单一层的话还能凑乎,层数多了简直是地狱不停地取成员,火山本来就是将复杂的东西简单化,现在成了简单的东西更复杂了

-----------------------------------------------------------------------------------
例如我想写一个带分组的自定列表框
第一层组件布局器,里面放个数组用来存分组
    第二层分组类,里面放个数组用来存列表成员
        第三层列表成员类,1个编辑框和1个矩形类(可能还有其他)

写到最后我想操作第I个分组里的第J个成员里的矩形,我需要这么写
控件名.元素组.取成员(I).元素组.取成员(J).矩形.左边 = 1
控件名.元素组.取成员(I).元素组.取成员(J).矩形.顶边 = 1
上面只是例子实际还要操作其他, 每次操作都要不停地取取取

如果有了局部参考的话, 我们只需取出一次
矩形 = 控件名.元素组.取成员(I).元素组.取成员(J).矩形
矩形.左边 = 1
矩形.顶边 = 1
-------------------------  局部参考实现  ---------------------------
实现局部变量参考打钩后, 将该变量变为指针, 以矩形为例
矩形 矩形类 参考
翻译后如下
矩形类 *矩形
----------------
矩形 = 控件名.元素组.取成员(I).元素组.取成员(J).矩形
翻译后如下
矩形 = &控件名.元素组.取成员(I).元素组.取成员(J).矩形
----------------
矩形.左边 = 1
矩形.顶边 = 1
矩形.重置(1,1,1,1)
翻译后如下
矩形->左边 = 1
矩形->顶边 = 1
矩形->重置(1,1,1,1)
-------------------------  动态窗口实现  ---------------------------
定义窗口时使用参考, 因为是指针可以为空
窗口A 我的窗口类 参考
翻译为
我的窗口类 * 窗口A
----------------
当窗口需要显示时
窗口A = 我的窗口类(参数1, 参数2, 参数3)
翻译为
窗口A = new 我的窗口类(参数1, 参数2, 参数3)
-------
窗口A.创建主窗口(参数...)
翻译为
窗口A->创建主窗口(参数...)
-------------------------  最后  ---------------------------
参考定义时变量多了个 *, 访问时给.换成->
这样函数返回如果是 @视窗.返回参考 = 真 的话也能完美接收
既能实现局部变量随意存取, 挂接事件, 又能实现类的动态创建
就算有1000个窗口,我不创建显示你, 你就不能浪费内存和CPU
另外类的动态创建接收构造参数是个问题, 因为火山的类里面已经有无参的构造函数了

此时涛哥要是能给函数重载和符号重载搞出来岂不是更美,从此火山PC再无短板了



回复

使用道具 举报

28

主题

227

帖子

3645

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3645
34#
发表于 2024-8-12 10:13:51 | 只看该作者
https://bbs.voldp.com/thread-22863-1-1.html  这个建议要是实现了,  PC不支持的参考,也能解决, 局部变量是否定义为引用变量也就不那么重要了, 这个建议 纯粹是火山翻译的问题,想解决就一定能解决, 解决不了就是不想,  不过目前看来基本上是没戏, 吴总天天想着小白还有安卓 PC GO 统一, 实际上呢, 毕竟不是一个语言, 很多东西都根本统一不了,  目前也有很多属性没有统一,部分东西仅支持安卓, 但绝对不允许某个东西仅支持PC.....过度的追求统一, 舍本逐末了... 既想要直接支持C++库引用, 又过度限制继承C++的特性...哎 ....
回复

使用道具 举报

251

主题

1812

帖子

7401

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
7401
QQ
33#
发表于 2024-8-12 06:15:27 | 只看该作者
支持
火山视窗封装视频教程
回复

使用道具 举报

24

主题

353

帖子

1706

积分

金牌会员

Rank: 6Rank: 6

积分
1706
32#
 楼主| 发表于 2024-4-11 12:20:35 | 只看该作者
qaz2428119 发表于 2024-4-11 09:24
火山不支持 -> 符号 也就没法支持参考

是的, 希望涛哥能改的支持吧
回复

使用道具 举报

25

主题

500

帖子

1842

积分

金牌会员

Rank: 6Rank: 6

积分
1842
31#
发表于 2024-4-11 09:24:21 | 只看该作者
wangvoldp 发表于 2024-4-9 23:54
您所说不支持也是因为访问成员时成员必须->访问吧,
发现是参考的成员访问, 给.换成->行不通么?
对参考对 ...

火山不支持 -> 符号 也就没法支持参考
回复

使用道具 举报

34

主题

348

帖子

3044

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3044
30#
发表于 2024-4-10 09:19:23 | 只看该作者
建议考虑添加一下子
回复

使用道具 举报

24

主题

353

帖子

1706

积分

金牌会员

Rank: 6Rank: 6

积分
1706
29#
 楼主| 发表于 2024-4-9 23:54:59 | 只看该作者
qaz2428119 发表于 2024-4-9 21:51
局部参考没法实现这个功能, 因为参考是指针(火山不支持指针), 利用引用符,倒是可以实现,不过局部变量使用引 ...
局部参考没法实现这个功能, 因为参考是指针(火山不支持指针)

您所说不支持也是因为访问成员时成员必须->访问吧,
发现是参考的成员访问, 给.换成->行不通么?
对参考对象的直接访问前面需要*, 比如int
回复

使用道具 举报

25

主题

500

帖子

1842

积分

金牌会员

Rank: 6Rank: 6

积分
1842
28#
发表于 2024-4-9 21:51:19 | 只看该作者
局部参考没法实现这个功能, 因为参考是指针(火山不支持指针), 利用引用符,倒是可以实现,不过局部变量使用引用符,限制很大,需要定义时就要确定引用那个对象,没法动态引用对象
回复

使用道具 举报

40

主题

201

帖子

1973

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1973
27#
发表于 2024-4-9 21:09:18 | 只看该作者
置指针内容(取变量地址(变量),文本型,“123”)
置指针内容(取变量地址(变量),整数型,12)
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 方法 置指针内容 <公开 静态 注释 = "变更指针位置内容" @嵌入式方法 = "">
  3. 参数 欲操作指针 <类型 = 变整数>
  4. 参数 指针数据类型 <@需求类型 = 数据类型 @匹配类型 = 所有类型>
  5. 参数 欲写入数据 <注释 = "提供所欲写入的数据,必须与调用"置指针"方法所提供数据的数据类型相同或匹配." @匹配类型 = 所有类型>
  6. {
  7.     @ *(@<指针数据类型> *)((INT_P)@<欲操作指针>) = @<欲写入数据>;
  8. }
复制代码
回复

使用道具 举报

53

主题

628

帖子

2662

积分

禁止发言

积分
2662
26#
发表于 2024-4-8 20:46:51 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-6-16 09:45 , Processed in 0.080710 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表