繁体   English   中英

C ++未知变量类型。 我应该使用模板吗?

[英]C++ unknown variable type. Should I use template?

我正在尝试创建一个类,该类将解析C ++中的文件。 但是,该文件实际上位于2个文件中,即标头和原始数据。

标头包含原始数据的数据类型(可以是int,double,float等)。 我想在我的班级中创建一个变量来存储原始数据。 无论数据类型如何,处理都是一样的。

我应该使用模板来执行此操作吗? 仅对1个变量使用模板化类是不是矫kill过正?

谢谢。

使用函数重载呢? 您说处理是一样的,所以...我想可以。 有时我会用它们来做这种事情。

例:

标头

class MyClass {
public:
    void function(int x);
    void function(double x);
    void function(string x);
    void function(char x);
};

编译器将知道要使用的功能,具体取决于您要发送(传递)给它的值。

模板当然可以在这里为您提供帮助。 它们提供了一种减少重复处理的方法,您说对于所有类型都是相同的。

当然,是否“应该”使用它们是一个更困难的问题,是否过高也是如此-两者都是意见问题,但是通常的使用表明仅使用一个变量将不会成为决定该问题的因素。

如果需要将包含不同类型的文件的内容处理到同一容器中,或者一个文件可以包含多个类型,那么boost变体可能会更合适。

由于您是从文件中读取类型的,因此这些类型在运行时是已知的,但是由于选项列表在编译时是已知的,因此您可以检查文件中的类型并传递该类型。

if(typeFromFile == headerValueForint)
{
    processFile<int>();
}
else if (typeFromFile == headerValueFordouble)
{
    processFile<double>();
}

但是,由于您列出的所有类型都是数字类型(并且我想知道如果存在其他任何非数字类型,处理的方式实际上是一样的),您可以决定将所有值都读为双精度-进行适当的范围检查。 它可能占用更多的内存,但是其影响取决于处理实际涉及的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM