gpt4 book ai didi

c++ - "User-defined literal operator not found"

转载 作者:太空狗 更新时间:2023-10-29 20:10:10 25 4
gpt4 key购买 nike

我正在阅读 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 作为参数的一部分。如果我尝试相同的操作,我只会收到一条错误消息,提示“未找到用户定义的文字运算符”。

这应该如何工作?

最佳答案

My question is regarding the last line. I'm assuming that the guidelines recommends defining Speed like this;

typedef int Speed;

没有。他们期待这样的事情:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com