另外:在代码中还有以下的方法
SwitchPlay::Register();
SetPlayStatus::Register();
MotionMode::Register();
上面三行语句是三个类中定义的静态方法。这样的类今后在我的代码中还要定义几百个,那样的话,代码中将会有几百个类似的语句,不知如何调整代码架构,优化一下这种重复代码的坏味道?
希望设计模式方面的高手指点!
例如:是否可以定义一个数组,其中放的是所有类名(可能有几百个!),然后用一个循环语句,取出所有的类名,转换成相应的类后,再调用这类的Register()方法即可。
11 个解决方案
#1
这个问题有点新鲜,没研究过! 不过估计是不可以的!!
期待高人回答!!
期待高人回答!!
#2
试下不就知道了
#3
顶楼上
#4
看了设计模式自然知道了 用它解决你这问题肯定不难的
#5
可以设置工程属性C/C++ / General / Additional Include Directories,这里加
#6
顶楼上!
#7
这个属性不是干这个的,它只是让你的在包含时如果不指定路径的话,编译器去这个目录找!
C++中没有这种方法的包含,因为在绝大多数情况下,都不会有这样的需求
如果你独特的设计需要这个,可以单独写一个.h文件,这个文件包含你目录中所有的头文件,然后其他cpp文件只要包含这个头文件即可
C++中没有这种方法的包含,因为在绝大多数情况下,都不会有这样的需求
如果你独特的设计需要这个,可以单独写一个.h文件,这个文件包含你目录中所有的头文件,然后其他cpp文件只要包含这个头文件即可
#8
比较常见的方法有:
1. 为这些类定义一个共同的根类Base
2. 把你这些函数都定义成根类的虚函数
3。 base类中定义一个init函数,调用上述函数
3. 根类内部定义一个静态的vector,用于保存类型为Base*
4. 根类的构造函数把this指针插入到vector中
5. 每个你派生的类都在其cpp中定义一个静态实例,这样这个静态实例会自动把自己加入上面那个vector(由于基类指针作用)
6. 在你主程序入口函数中,枚举vector中的每个指针,分别调用init
1. 为这些类定义一个共同的根类Base
2. 把你这些函数都定义成根类的虚函数
3。 base类中定义一个init函数,调用上述函数
3. 根类内部定义一个静态的vector,用于保存类型为Base*
4. 根类的构造函数把this指针插入到vector中
5. 每个你派生的类都在其cpp中定义一个静态实例,这样这个静态实例会自动把自己加入上面那个vector(由于基类指针作用)
6. 在你主程序入口函数中,枚举vector中的每个指针,分别调用init
#9
C++的OO特性让你可以不包含任何.h,只要有base就可以工作了。如果你需要包含每个类的.h,说明你还没搞懂OO
#10
哦,sorry,那应该是我弄错了,确实是的。。。
#11
已经解释得很详细了,帮顶!
#1
这个问题有点新鲜,没研究过! 不过估计是不可以的!!
期待高人回答!!
期待高人回答!!
#2
试下不就知道了
#3
顶楼上
#4
看了设计模式自然知道了 用它解决你这问题肯定不难的
#5
可以设置工程属性C/C++ / General / Additional Include Directories,这里加
#6
顶楼上!
#7
这个属性不是干这个的,它只是让你的在包含时如果不指定路径的话,编译器去这个目录找!
C++中没有这种方法的包含,因为在绝大多数情况下,都不会有这样的需求
如果你独特的设计需要这个,可以单独写一个.h文件,这个文件包含你目录中所有的头文件,然后其他cpp文件只要包含这个头文件即可
C++中没有这种方法的包含,因为在绝大多数情况下,都不会有这样的需求
如果你独特的设计需要这个,可以单独写一个.h文件,这个文件包含你目录中所有的头文件,然后其他cpp文件只要包含这个头文件即可
#8
比较常见的方法有:
1. 为这些类定义一个共同的根类Base
2. 把你这些函数都定义成根类的虚函数
3。 base类中定义一个init函数,调用上述函数
3. 根类内部定义一个静态的vector,用于保存类型为Base*
4. 根类的构造函数把this指针插入到vector中
5. 每个你派生的类都在其cpp中定义一个静态实例,这样这个静态实例会自动把自己加入上面那个vector(由于基类指针作用)
6. 在你主程序入口函数中,枚举vector中的每个指针,分别调用init
1. 为这些类定义一个共同的根类Base
2. 把你这些函数都定义成根类的虚函数
3。 base类中定义一个init函数,调用上述函数
3. 根类内部定义一个静态的vector,用于保存类型为Base*
4. 根类的构造函数把this指针插入到vector中
5. 每个你派生的类都在其cpp中定义一个静态实例,这样这个静态实例会自动把自己加入上面那个vector(由于基类指针作用)
6. 在你主程序入口函数中,枚举vector中的每个指针,分别调用init
#9
C++的OO特性让你可以不包含任何.h,只要有base就可以工作了。如果你需要包含每个类的.h,说明你还没搞懂OO
#10
哦,sorry,那应该是我弄错了,确实是的。。。
#11
已经解释得很详细了,帮顶!