|
5#
楼主 |
发表于 2023-1-3 00:19:57
|
只看该作者
本帖最后由 609177738 于 2023-1-3 00:23 编辑
没有参数啊 是取子类对象的数据类型啊
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,窗口组件::静态方法 )
其他的就更不行了
|
|