今天在工作上遇到一个问题,觉得很有代表性,特抽象如下:
通过设计模式的角度来说,就是模板方法,已经有一个基类,需要定义很多子类来实现其方法。
但是类名都只有一部分不同,且构造函数的入参也只有一部分不同。
如代码:

输出如下:

非常恶心的代码,而且非常容易写错,如果是python,由于其本身自省的能力,所以不会存在这样的问题,但是C++可没有这种能力,所以我们只能寄希望与宏定义了。
直接来看一下我们改写的代码:

输入结果为:

OK,问题解决!

可能问题本身在不同的场景下有多种解决方式,但是这至少提供了另一个看问题的角度,希望对大家有用。

C/C++宏定义的可变参数

编写代码的过程中,经常会输出一些调试信息到屏幕上,一般会调用printf这类的函数。 但是当调试解决之后,我们需要手工将这些地方删除或者注释掉。 再这次的...

阅读全文

用vim在代码文件中自动添加#ifdef,#define,#endif的头文件宏定义

这几天给vim写了许多新功能,包括自动添加#ifndef,#define,#endif,以及在变更代码时自动对代码进行相关操作时间和操作人等,我就慢慢来写吧~~ 首先说一下自动...

阅读全文

8则回应给“巧用宏定义来简写C,C++代码”

  1. Nozer说道:

    Vimer老大,是干C++这活的啊,我最近也开始学C++,不知道能不能跟你学习学习?

    [回复]

    Dante 回复:

    过奖啦,有什么问题可以和我随便探讨,呵呵~

    [回复]

  2. zclmoon说道:

    你好,你的博客的代码插件用的是哪个?我用的是google syntax插件,但是必须转到HTML模式下手工弄,很麻烦阿。而且还不能来回切换HTML和可视模式。。搜了很多也没有搜到好的解决方法。。

    [回复]

    梧桐 回复:

    帮博主回答啦。。wp-syntax。。

    [回复]

  3. 我也想学C++,不过没有人带啊。

    [回复]

  4. 雨碎江南说道:

    要是Java的话我会选择把初始化代码写在static{}里头..C++ …我也没有想出来好办法.

    [回复]

  5. 1901说道:

    多谢博主分享,转载走了,谢谢!

    [回复]

  6. ss说道:

    模块化定义类。。。公司内部command类这是类似这样设计的

    [回复]

发表评论