我正在使用 C++ 开发一个小型框架,以在我的一些项目中使用,以静态链接作为各种实用程序库。我想你可以把它比作一个更符合我个人需求的特定领域,以及更简单的库,比如juce。这与其他任何事情一样都是一种学习和体验练习,所以我想花时间正确地做事并了解我应用的技术。我目前在 linux 中工作,但旨在使代码具有可移植性,因此这将允许我将任何特定于平台的代码写入接口。
目前我正在开发一个基本的消息传递系统,我想允许包含各种类型对象的消息。我最初的想法是这样的:
class Message {
virtual std::string type;
};
class DataMessage : Message {
std::vector<std::string> *data;
};
我的问题是,识别 Message 是 DataMessage 并将其转换为实际类型或访问它包含的数据的最佳方法是什么?
我可以为上面的类型使用一个字符串,但这并不能保证每个子类实际上都有一个唯一的类型 ID。另外,我想知道字符串处理的开销是否会比替代方法慢(例如,我可以扩展一个枚举吗?)。
至于访问数据,如果我可以将 Message 转换为正确的类型,这不是问题。否则,我可以向基类添加一个虚函数作为访问器(但是我如何让它使用与基类中指定的返回类型不同的返回类型?如果该类不需要任何其他数据怎么办? ),或者作为作用于数据的工作函数(但我宁愿将它作为类之间的数据传递机制,而不是回调样式框架)。
非常感谢任何建议、替代方案或链接。讨论不同的方法会很棒!
提前谢谢各位。