C++ 设计问题:枚举或函数或其他
我有一个设计问题: 对于某些命令,我有以下整数集,如:C++ 设计问题:枚举或函数或其他,c++,function,pointers,enums,C++,Function,Pointers,Enums,我有一个设计问题: 对于某些命令,我有以下整数集,如: addition = {2,3,4,5} subtraction = {3,6,9} 其中add的优先级大于sub的优先级 所以我创建了一个类,比如 class Command{ int priority; public: bool operator <(const Command &com); bool isInSet(int); // i donot want this to b
addition = {2,3,4,5}
subtraction = {3,6,9}
其中add的优先级大于sub的优先级
所以我创建了一个类,比如
class Command{
int priority;
public:
bool operator <(const Command &com);
bool isInSet(int);
// i donot want this to be int ,
// may be tommorrow i go for strings or char.
// How to do this. AND
void execute(int); // should it be here?
};
我该怎么办
还有其他好方法吗?
谢谢。我不确定我是否很明白你的问题,但是: 每个命令是否都应该知道如何执行,即命令本身是否应该包含一个函数 我想是的。我将把命令的逻辑作为类的一个方法。您希望使用不同的结构,因此我将创建一个抽象基类,作为数据类型的接口。该命令将接受指向基类的指针,并使用接口对其执行操作 如果execute()进入命令内部,它将如何访问数据结构?所以命令也应该有一个指向这个DS的指针 是的,我认为这完全可以 或者应该像命令发送给我一些枚举,然后我切换它来执行类似的操作
enum {PUSH, POP};
while(!commands[i].isInSet(3))
++i;
switch(comands[i].getName())
{
case PUSH:
// operations on DS i have all of them in this scope. :)
case POP:
...
}
如果你在很多地方都有开关,我想你应该避免。如果只在一个地方-也许没关系。但一般来说,我会避免这种方法,因为它会使添加新类型变得困难。您忘记了一个开关,然后调试了几个小时