递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] 【建议】新增一个@sn<特定名称>

[复制链接]

26

主题

204

帖子

3187

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
3187
跳转到指定楼层
楼主
发表于 2023-1-2 16:23:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
调用该嵌入式方法时提供的调用对象的类名


简单来说 即  decltype(@sn<this>) 的结果类型  


可以命名为  @sn<this_class>
---------------------------------------
另 嵌入式方法 为什么还不支持重复使用@sn<this>, @飞扬工作室  来解释下
回复

使用道具 举报

62

主题

1674

帖子

8611

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8611
沙发
发表于 2023-1-2 16:27:52 | 只看该作者
@sn<current_class>
宏扩展多次会导致语法故障
回复

使用道具 举报

26

主题

204

帖子

3187

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
3187
板凳
 楼主| 发表于 2023-1-2 21:05:18 | 只看该作者
飞扬工作室 发表于 2023-1-2 16:27
@sn
宏扩展多次会导致语法故障

@sn<current_class>和@sn<current_class_def>等等都不行 ,需求是要求取嵌入式方法所在类的子类调用方的类名
使用场景有点特殊:
父类(禁止创建对象)里新建了一个嵌入式方法,该嵌入式方法必须由其子类调用,并且该嵌入式方法必须调用子类的静态方法 ,
每个子类都有(同名)静态方法 (为什么不把静态方法放 父类里? 因为静态方法需要嵌入子类指针)
---
有偷懒的意思, 如果在每个子类里都复制粘贴该嵌入式方法也可以
场景用途是 封界面库组件  父类对应窗口组件  子类对应具体组件  每次新增组件都复制 有点麻烦



回复

使用道具 举报

62

主题

1674

帖子

8611

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8611
地板
发表于 2023-1-2 22:59:12 | 只看该作者
在静态嵌入式方法中用 @pdt 取调用参数的数据类型即可
回复

使用道具 举报

26

主题

204

帖子

3187

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
3187
5#
 楼主| 发表于 2023-1-3 00:19:57 | 只看该作者
本帖最后由 609177738 于 2023-1-3 00:23 编辑
飞扬工作室 发表于 2023-1-2 22:59
在静态嵌入式方法中用 @pdt 取调用参数的数据类型即可

没有参数啊  是取子类对象的数据类型啊
class  窗口组件  //禁止创建对象
{
    void 嵌入式方法A()    //火山代码不能复制 ,象征性表达下意思
    {
        fun(@sn<this>.Getmydata(), 子类数据类型::静态方法 )  //这里需求是decltype((@sn<this>)的数据类型
    }
}
//-----------------------假定一个 名为  "按钮EX "的窗口组件的子类  
class  按钮EX : public 窗口组件
{
   static void 静态方法 ();
}
void  @sn<current_class>::静态方法 ()  //静态方法的参数不涉及火山的数据类型
{
      @sn<current_class>* ptr = .....;  //这里不能是 窗口组件*  必须是窗口组件的子类*
}
静态方法的代码是写在宏里面的 所以不用手动复制粘贴  而嵌入式方法A是火山的程序 不能写在宏里面  除非每个窗口组件子类都手动复制粘贴一遍 嵌入式方法A()
--------------
那么火山在子类的对象 调用嵌入式方法时:
按钮EX    对象A;
对象A.嵌入式方法A()   //对应生成的c++代码必须是    fun (对象A, 按钮EX::静态方法 )
而 @sn<current_class> 生成的c++代码是  fun (对象A,窗口组件::静态方法 )  
其他的就更不行了








回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 13:25 , Processed in 0.086495 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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