我正在阅读 CppCoreGuidelines 哲学,并找到了一个我不明白的例子。 ( https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-philosophy )
代码示例说;
change_speed(double s); // bad: what does s signify?
// ...
change_speed(2.3);
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
我的问题是关于最后一行。我假设指南建议这样定义速度;
typedef int Speed;
但在示例的最后一行中,他们使用 m 和 s 作为参数的一部分。如果我尝试同样的操作,我只会收到一条错误消息,提示“未找到用户定义的文字运算符”。
这应该如何工作?
最佳答案
不。他们期待这样的事情:
class Speed {
double value;
public:
....
}
class Distance {
double value;
public:
...
};
class Time {
double value;
public:
....
};
Speed operator /(Distance d, Time t);
以及一对用户定义的距离和时间的文字运算符
Distance operator "" _m(double);
Time operator "" _s(double);
但是示例中有一个错误。它应该是:
change_speed(23_m / 10_s); // meters per second
关于c++ - "User-defined literal operator not found",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41533409/