如何在C 中创建ConstexPR函数
How to create constexpr functions in c++
我正在阅读使用Bjarne Stroustrup撰写的C 练习的编程原理和练习,并且我被困在第204页,关于Constexpr,我似乎无法制作代码书中的示例:
constexpr double xscale = 10;
constexpr double yscale = 0.8;
constexpr Point scalePoint(Point p)
{
return{ xscale * p.x, yscale * p.y };
}
Point是一个具有两个成员的类,X Y和一个构造函数:
class Point
{
double x;
double y;
Point(double inX, double inY)
: x(inX),y(inY)
{
}
};
我遇到的错误是:
Error (active)
function "scalePoint" (declared at line 13) was previously not declared constexpr
正如评论者bo正确指出的那样,您也必须使Point Constexpr的构造函数。constexpr函数只能调用其他constexpr函数!
此外,您只有班级的私人成员。因此,函数scalePoint()无法访问p.x,p.y,并且由于构造函数是私有的。
使点成为结构或添加"公共:"语句:
struct Point
{
double x;
double y;
constexpr Point(double inX, double inY)
: x(inX),y(inY)
{
}
};
为我编译。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 多成员Constexpr结构初始化
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 编译时生成应在构造函数中创建的非 constexpr 对象数组
- 基于模式创建位掩码作为 constexpr
- 如何在C 中创建ConstexPR函数
- 通过在 constexpr 构造函数中传递 N,在编译时创建一个大小为 N 的数组
- 使用C constexpr可以创建符号重复
- 在不创建参数对象的情况下解析constexpr函数
- 不能创建constexpr std::vector