【发布时间】:2010-12-01 17:55:19
【问题描述】:
我有一个 Target 类,其“fileType”enum 包含我的解析器需要了解的各种文件(当前为 SOURCE、HEADER、RESOURCE)。我希望我的 Parsing 函数能够执行以下通用操作:
if( token == some_known_fileType )
put_nextToken_in_the_list_for_that_fileType();
else
return an_error();
但有一个问题:我希望能够使用Target 的子类简单地扩展已知的文件类型,以正确的方式扩展enum,请参阅Base enum class inheritance 了解我是如何做到的。我不想修改上面的代码,而只是一般地扩展目标一半。可能需要 C++0X,非常受欢迎。
谢谢!
更新:在尝试在这里解释它并发布一些简化的类声明时,我意识到我的设计被破坏了,我试图将 fileType 的专业化推到我的类结构中太深。我只想在一个地方存储所有已知类型的完整列表,但在尝试这样做时,我不小心强制设计一次在两个地方访问该列表。我现在意识到所有文件类型的列表应该是关键字 SOURCE、HEADER 等被读取的位置,并从那里*一般地处理。我会将完整列表存储在一个地方,稍后通过“巨大”enum 访问该列表。 std::map<fileType, std::set<std::string> > 在这里作为一个合乎逻辑的选择突然出现在我的脑海中,而不是为每个特定的 fileType 单独命名为 set。不过,感谢您在回复中的聪明才智!仍然欢迎任何想法。
【问题讨论】:
-
您是否介意添加更多代码。我不确定你想做什么......