d插件构造器2

原文

template C ()
{
    this (int i)
    {
       
    }
}

class A
{
    mixin C;
    
    this ()
    {
       
    }
}

void main ()
{
    auto a = new A(3);
}

可这样:

template C ()
{
    void fun(int i)
    {
       
    }
}

class A
{
    mixin C f;
    alias fun = f.fun;
    
    void fun ()
    {
       
    }
}

void main ()
{
    auto a = new A();
    a.fun();
}

对普通函数,可用重载集显式插入.但因为构造器没有名字,所以不行.试用__ctor,也不行.解决方法,是应该允许:

template C ()
  {
      this (int i)
      {   
  .......
      }   
  }
  
  class A
  {
      mixin C f;
      alias __ctor = f.__ctor;
// 应该允许.
  ....
      this ()
      {   
      }   
  }
  
  void main ()
  {
      auto a = new A(3);
  }

临时方法:

template C ()
{
    this (int i)
    {
    }
}

class A
{
    mixin C f;
    this ()
    {
    }
    alias __ctor = f.__ctor;
}

void main ()
{
    auto a = new A(3);
}

似乎只有在已定义符号时,__ctor别名才有用.
这里

以前,禁止在重载集中加构造器,因为禁止用__ctor定义符号.然而,这使得不能在mixin模板中定义构造器,来添加构造器重载集中.应允许它.

posted @   zjh6  阅读(13)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示