c – 以代数表达式中的数字和单位作为参数的文字
发布时间:2020-12-16 10:37:54 所属栏目:百科 来源:网络整理
导读:如何设计一个可以采用数字和单位的代数表达形式表达的类型,其中Speed是类型,23m / 10s可以是一个表达式? 例: change_speed(Speed s); // better: the meaning of s is specified// ...change_speed(2.3); // error: no unitchange_speed(23m / 10s); // me
如何设计一个可以采用数字和单位的代数表达形式表达的类型,其中Speed是类型,23m / 10s可以是一个表达式?
例: change_speed(Speed s); // better: the meaning of s is specified // ... change_speed(2.3); // error: no unit change_speed(23m / 10s); // meters per second 编辑这个问题提出了一个问题,即23m形式的文字是否可行. 为了清楚起见,编辑已删除了对源的引用.它可以找到here 解决方法
您需要做的是设计类型,在计算表达式时,它会产生所需的类型.同
change_speed(23m / 10s); 我们需要23m和10s,每种产生一种类型,当你将它们分开时给你一个速度.如果我们有 struct Meter { Meter(double value) : value(value) {} double value; }; struct Second { Second(double value) : value(value) {} double value; } Speeds operator /(const Meter& m,const Second& s) { return Speed(m.value / s.value); } 然后我们只需要为Meter和Second定义literal operators就好了 Meter operator "" _m(double value) { return Meter(value); } Second operator "" _s(double value) { return Second(value); } 我们必须使用_m和_s来生成这些有效的用户定义文字.所有不符合标准的字面都必须以_开头. 然后 change_speed(23_m / 10_s) 变 change_speed(Meter(23) / Second(10)) 变成了 change_speed(Speed(2.3)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |