V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wutiantong
V2EX  ›  C

请教一下各位大佬:写模版类的特例化时,如果只有大概 10%的差异,如何优雅的处理对其余 90%的代码的“复制”?

  •  
  •   wutiantong · 2018-11-15 11:33:56 +08:00 · 2267 次点击
    这是一个创建于 1987 天前的主题,其中的信息可能已经有所发展或是发生改变。
    6 条回复    2018-11-23 11:54:32 +08:00
    RaynorGu
        1
    RaynorGu  
       2018-11-15 11:41:09 +08:00
    组合与集成,抽公共函数
    wutiantong
        2
    wutiantong  
    OP
       2018-11-15 11:52:58 +08:00 via iPhone
    @RaynorGu 继承还得找个合适的类名,想名字这种事情真的很烦呀…
    codehz
        3
    codehz  
       2018-11-15 17:53:35 +08:00   ❤️ 1
    把公共部分加个 Internal 写在 protected 里面,然后把模板函数直接写,然后调用 Internal 函数。。。
    如果要特化,就把特化需要的代码单独写到一个类里面,然后在原来的类的模板函数里调用特化类的函数,再传递到 Internal 函数里(
    至少 Minecraft 基岩版就是这么做的,算是一个实际使用的例子。。
    yutian2211
        4
    yutian2211  
       2018-11-15 20:46:42 +08:00 via Android
    @codehz 有 link 么
    iceheart
        5
    iceheart  
       2018-11-23 07:42:26 +08:00 via Android
    那%10 可以用 lambda 写
    wutiantong
        6
    wutiantong  
    OP
       2018-11-23 11:54:32 +08:00
    @codehz 我的实际场景没有那么复杂。。。只是个很单纯的类。。。
    @RaynorGu 我前两天试着用继承来做,结果其实并没有简化多少,因为在子类中还得加很多 using 重新声明。。。

    我目前的做法是把那个类又进一步拆开成两个了,也就是说,把产生差异的那部分单独组成了一个类,然后这两个类如同双子一般支持相互 conversion。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3483 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:00 · PVG 19:00 · LAX 04:00 · JFK 07:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.