我正在阅读由Bjarne Stroustrup编写的编程原理和实践使用C ++ ,我在第204页,关于constexpr,似乎我无法在书中编写代码示例:
test <- subset(test, select = -c(i) )
Point是一个有两个成员的类,x y和一个构造函数:
constexpr double xscale = 10;
constexpr double yscale = 0.8;
constexpr Point scalePoint(Point p)
{
return{ xscale * p.x, yscale * p.y };
}
我得到的错误是:
class Point
{
double x;
double y;
Point(double inX, double inY)
: x(inX),y(inY)
{
}
};
答案 0 :(得分:2)
正如评论员Bo指出的那样,你必须制作Point constexpr的构造函数。 Constexpr函数只能调用其他constexpr函数!
此外,您在Point类中只有私人会员。因此,函数scalePoint()无法访问p.x,p.y并且无法创建Point的实例作为返回值,因为构造函数是私有的。
Make Point是一个结构或添加“public:”语句:
struct Point
{
double x;
double y;
constexpr Point(double inX, double inY)
: x(inX),y(inY)
{
}
};
那为我编译。