【发布时间】:2017-01-03 12:48:39
【问题描述】:
文件 Base.h
class Base {
}
文件 A.h
class A : public Base {
}
文件 B.h
class B : public Base {
}
文件 C.h
#define D_CLASS A
文件 C.cpp
#include "c.h"
#include D_CLASS##.h // <--- how to make the header from class name?
Base * pBase = new D_CLASS() ;
这样做的动机...
支持不同操作系统的系统,每个操作系统都有头文件,告诉构建器要创建的类的名称,以提供某些功能。
当用户添加它的新操作系统时,他还需要使用该功能定义他的特定类名。
【问题讨论】:
-
这里为什么有 c 标签?
-
不要这样做。使用你的工具而不是反对它们。
-
输入
#include D_CLASS##.h比输入#include a.h容易得多吗? -
请告诉我这个的用例
-
因为你的用户名是“教我”——生活中的一课——不要为自己的背部制造一根棍子
标签: c++ c-preprocessor