传递多种数据类型的最佳方法
Best way to pass multiple data types
我正在编写一个插件框架,插件应该将数据传递给应用程序,我创建了一个队列,插件在其中放置数据,但我希望插件可以传递多种数据类型(int,bool,char,...),而不仅仅是一种。
有什么想法或任何好方法吗?
如果使用 boost 库是一种选择,我强烈建议使用 boost::any
:
boost::any a(1234567);
boost::any b(12.3456);
boost::any c(12345LL);
boost::any d(true);
您可以使用字符并将它们转换为几乎任何内容。对于你不能通过简单的强制转换"到达"的数据类型,我建议使用 memcpy()。
使用模板和其他通用编程技术作为设计的一部分。
这是模板的入门:http://www.cplusplus.com/doc/tutorial/templates/
最推荐使用 boost any,但我认为从设计角度来看比当前接受的答案更好的替代方案(如果您想最小化依赖关系)是以下非常简单的模板包装器实现,它接受并返回任何类型:
class IAnyType {}
template <class T>
class AnyType : public IAnyType
{
private:
T value_;
public:
AnyType(T value) : value_(value) {}
void set(T value) { value_ = value; }
T get() { return value_; }
};
然后,只需让您的队列包含 IAnyType 对象并将所有参数存储在 AnyType 对象中,然后再将其添加到队列中。您当然可以通过重载各种赋值运算符来美化这一点,并使使用更加简单。
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 在C++中向零方向近似的最佳方法
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 检测win32服务创建和删除的最佳方法
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 将线程中的数据存储到全局容器的最佳方法?
- 将一系列整数放入类的最佳方法是什么?
- 在派生类中使用基类的私有成员变量的最佳方法
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 比较两个节点坐标的最佳方法是什么?
- 在nodejs中使用本机代码的最佳方法是什么?
- 将 pybind11 绑定标记为已弃用的最佳方法
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- C++中变量混叠的最佳方法
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?