VC中头文件的包括是否支持:include "test/*.h",即某个目录下的头文件全包含?

时间:2021-07-11 23:44:12
一个目录下有很多*。H文件,支持通配符include吗?
另外:在代码中还有以下的方法

 SwitchPlay::Register();
 SetPlayStatus::Register();
 MotionMode::Register();
上面三行语句是三个类中定义的静态方法。这样的类今后在我的代码中还要定义几百个,那样的话,代码中将会有几百个类似的语句,不知如何调整代码架构,优化一下这种重复代码的坏味道?
希望设计模式方面的高手指点!


例如:是否可以定义一个数组,其中放的是所有类名(可能有几百个!),然后用一个循环语句,取出所有的类名,转换成相应的类后,再调用这类的Register()方法即可。

11 个解决方案

#1


这个问题有点新鲜,没研究过! 不过估计是不可以的!!
期待高人回答!!

#2


试下不就知道了

#3


顶楼上

#4


看了设计模式自然知道了  用它解决你这问题肯定不难的 

#5


可以设置工程属性C/C++ / General / Additional Include Directories,这里加

#6


顶楼上!

#7


这个属性不是干这个的,它只是让你的在包含时如果不指定路径的话,编译器去这个目录找!
C++中没有这种方法的包含,因为在绝大多数情况下,都不会有这样的需求
如果你独特的设计需要这个,可以单独写一个.h文件,这个文件包含你目录中所有的头文件,然后其他cpp文件只要包含这个头文件即可
引用 5 楼 visualeleven 的回复:
可以设置工程属性C/C++ / General / Additional Include Directories,这里加

#8


比较常见的方法有:
1. 为这些类定义一个共同的根类Base
2. 把你这些函数都定义成根类的虚函数
3。 base类中定义一个init函数,调用上述函数
3. 根类内部定义一个静态的vector,用于保存类型为Base*
4. 根类的构造函数把this指针插入到vector中
5. 每个你派生的类都在其cpp中定义一个静态实例,这样这个静态实例会自动把自己加入上面那个vector(由于基类指针作用)
6. 在你主程序入口函数中,枚举vector中的每个指针,分别调用init
引用楼主 liuguibing 的回复:
一个目录下有很多*。H文件,支持通配符include吗?
另外:在代码中还有以下的方法

 SwitchPlay::Register();
 SetPlayStatus::Register();
 MotionMode::Register();
上面三行语句是三个类中定义的静态方法。这样的类今后在我的代码中还要定义几百个,那样的话,代码中将会有几百个类似的语句,不知如何调整代码架构,优……

#9


C++的OO特性让你可以不包含任何.h,只要有base就可以工作了。如果你需要包含每个类的.h,说明你还没搞懂OO

#10


引用 7 楼 arong1234 的回复:
这个属性不是干这个的,它只是让你的在包含时如果不指定路径的话,编译器去这个目录找!
C++中没有这种方法的包含,因为在绝大多数情况下,都不会有这样的需求
如果你独特的设计需要这个,可以单独写一个.h文件,这个文件包含你目录中所有的头文件,然后其他cpp文件只要包含这个头文件即可

引用 5 楼 visualeleven 的回复:
可以设置工程属性C/C++ / General / Add……

哦,sorry,那应该是我弄错了,确实是的。。。

#11


已经解释得很详细了,帮顶!
引用 8 楼 arong1234 的回复:
比较常见的方法有:
1. 为这些类定义一个共同的根类Base
2. 把你这些函数都定义成根类的虚函数
3。 base类中定义一个init函数,调用上述函数
3. 根类内部定义一个静态的vector,用于保存类型为Base*
4. 根类的构造函数把this指针插入到vector中
5. 每个你派生的类都在其cpp中定义一个静态实例,这样这个静态实例会自动把自己加入上面那个vector(由……

#1


这个问题有点新鲜,没研究过! 不过估计是不可以的!!
期待高人回答!!

#2


试下不就知道了

#3


顶楼上

#4


看了设计模式自然知道了  用它解决你这问题肯定不难的 

#5


可以设置工程属性C/C++ / General / Additional Include Directories,这里加

#6


顶楼上!

#7


这个属性不是干这个的,它只是让你的在包含时如果不指定路径的话,编译器去这个目录找!
C++中没有这种方法的包含,因为在绝大多数情况下,都不会有这样的需求
如果你独特的设计需要这个,可以单独写一个.h文件,这个文件包含你目录中所有的头文件,然后其他cpp文件只要包含这个头文件即可
引用 5 楼 visualeleven 的回复:
可以设置工程属性C/C++ / General / Additional Include Directories,这里加

#8


比较常见的方法有:
1. 为这些类定义一个共同的根类Base
2. 把你这些函数都定义成根类的虚函数
3。 base类中定义一个init函数,调用上述函数
3. 根类内部定义一个静态的vector,用于保存类型为Base*
4. 根类的构造函数把this指针插入到vector中
5. 每个你派生的类都在其cpp中定义一个静态实例,这样这个静态实例会自动把自己加入上面那个vector(由于基类指针作用)
6. 在你主程序入口函数中,枚举vector中的每个指针,分别调用init
引用楼主 liuguibing 的回复:
一个目录下有很多*。H文件,支持通配符include吗?
另外:在代码中还有以下的方法

 SwitchPlay::Register();
 SetPlayStatus::Register();
 MotionMode::Register();
上面三行语句是三个类中定义的静态方法。这样的类今后在我的代码中还要定义几百个,那样的话,代码中将会有几百个类似的语句,不知如何调整代码架构,优……

#9


C++的OO特性让你可以不包含任何.h,只要有base就可以工作了。如果你需要包含每个类的.h,说明你还没搞懂OO

#10


引用 7 楼 arong1234 的回复:
这个属性不是干这个的,它只是让你的在包含时如果不指定路径的话,编译器去这个目录找!
C++中没有这种方法的包含,因为在绝大多数情况下,都不会有这样的需求
如果你独特的设计需要这个,可以单独写一个.h文件,这个文件包含你目录中所有的头文件,然后其他cpp文件只要包含这个头文件即可

引用 5 楼 visualeleven 的回复:
可以设置工程属性C/C++ / General / Add……

哦,sorry,那应该是我弄错了,确实是的。。。

#11


已经解释得很详细了,帮顶!
引用 8 楼 arong1234 的回复:
比较常见的方法有:
1. 为这些类定义一个共同的根类Base
2. 把你这些函数都定义成根类的虚函数
3。 base类中定义一个init函数,调用上述函数
3. 根类内部定义一个静态的vector,用于保存类型为Base*
4. 根类的构造函数把this指针插入到vector中
5. 每个你派生的类都在其cpp中定义一个静态实例,这样这个静态实例会自动把自己加入上面那个vector(由……