[英]Template setter setting a value of an unknown type. can I have a non template getter for this value?
[英]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.