qt5 error: ‘constexpr’
时间: 2023-10-27 18:41:55 浏览: 84
这个错误通常是因为您的编译器不支持 `constexpr` 关键字。`constexpr` 是 C++11 中引入的关键字,用于声明可以在编译时计算的常量表达式。如果您的编译器不支持 C++11,那么它就无法识别 `constexpr` 关键字。
解决这个问题的方法是使用支持 C++11 的编译器。如果您使用的是旧版的编译器,升级到支持 C++11 的版本即可。另外,也可以尝试使用 `const` 代替 `constexpr`,但这样可能会影响代码的性能。
相关问题
error C3615: constexpr 函数
constexpr 函数是在编译时求值的函数。它们用于在编译时计算结果,并将结果作为常量使用。然而,C++标准并不允许所有类型的函数都可以声明为constexpr。
错误C3615是Visual Studio编译器的错误代码,它表示声明为constexpr的函数存在某些限制,不符合C++标准中constexpr函数的要求。
要使用constexpr函数,函数必须满足以下条件:
1. 函数必须是常量表达式,即在编译时能够确定结果。
2. 函数的返回类型必须是字面类型(literal type)。
3. 函数体内只能包含一些特定类型的语句和表达式,如return语句、条件语句、循环语句等。
如果你遇到了C3615错误,可能是因为你的函数不满足上述条件之一。你可以检查代码,确保函数满足constexpr函数的所有要求,并根据需要进行修改。
你给出的上面的代码有这样的错误main.cpp: In constructor 'Rect::Rect(Point, Point)': main.cpp:20:32: error: no matching function for call to 'Point::Point()' Rect(Point tl_, Point br_) { ^ main.cpp:20:32: note: candidates are: main.cpp:11:5: note: Point::Point(int, int) Point(int x_, int y_) { ^ main.cpp:11:5: note: candidate expects 2 arguments, 0 provided main.cpp:8:7: note: constexpr Point::Point(const Point&) class Point { ^ main.cpp:8:7: note: candidate expects 1 argument, 0 provided main.cpp:8:7: note: constexpr Point::Point(Point&&) main.cpp:8:7: note: candidate expects 1 argument, 0 provided main.cpp:20:32: error: no matching function for call to 'Point::Point()' Rect(Point tl_, Point br_) { ^ main.cpp:20:32: note: candidates are: main.cpp:11:5: note: Point::Point(int, int) Point(int x_, int y_) { ^ main.cpp:11:5: note: candidate expects 2 arguments, 0 provided main.cpp:8:7: note: constexpr Point::Point(const Point&) class Point { ^ main.cpp:8:7: note: candidate expects 1 argument, 0 provided main.cpp:8:7: note: constexpr Point::Point(Point&&) main.cpp:8:7: note: candidate expects 1 argument, 0 provided 详细评判结果 »
这个错误是因为在 Rect 类的构造函数中调用了 Point 类的构造函数,但是没有提供任何参数。根据错误信息,Point 类有三个候选构造函数,但是都需要至少一个参数。
你需要在创建 Rect 对象时为 Point 对象提供所需的参数。例如:
```
Point tl(0, 0); // 创建左上角点
Point br(10, 10); // 创建右下角点
Rect rect(tl, br); // 创建矩形对象
```
这样就可以避免上述错误。
阅读全文