我正在阅读 C++ 入门第 5 版,第 10 章(lambdas 表达式),这是一个旨在用绝对值替换向量中的负值的程序。
transform(vi.begin(), vi.end(), vi.begin(),
[](int i) { if (i < 0) return -i; else return i; });
Run Code Online (Sandbox Code Playgroud)
作者说:
这段代码无法编译,因为 lambda 将返回类型推断为 as
void但我们返回了一个值,为了解决这个问题,我们必须使用尾随返回类型。
但是当我在 Windows 上用 GNU GCC Compiler 编译这段代码时,它运行良好。
作者还说:
这个版本编译是因为我们不需要指定返回类型,因为可以从条件运算符的类型推断出该类型。
transform(vi.begin(), vi.end(), vi.begin(),
[](int i) { return i < 0 ? -i : i; });
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:
我刚刚开始学习 Qt,目前我正在阅读Nicolas Sheriff所著的《Learn Qt 5》一书。我在哪里,在第 2 章中,我正在按照所有说明进行操作,并且我了解自己在做什么,但是我遇到了一件事:当我与其他程序一起编译以下程序时,我收到了此错误列表:显示错误消息的图像
这是项目结构
我觉得值得展示的文件是:
cm.pro 文件
QT -= gui
TARGET = cm-lib
TEMPLATE = lib
CONFIG += c++17
DEFINES += CMLIB_LIBRARY
INCLUDEPATH += source
SOURCES += source/models/client.cpp \
source/controllers/master-controller.cpp \
HEADERS += source/cm-lib_global.h \
source/controllers/master-controller.h \
source/models/client.h \
Run Code Online (Sandbox Code Playgroud)
cm-lib.pro
QT -= gui
TARGET = cm-lib
TEMPLATE = lib
CONFIG += c++17
DEFINES += CMLIB_LIBRARY
INCLUDEPATH += source
SOURCES += source/models/client.cpp \
source/controllers/master-controller.cpp \
HEADERS += source/cm-lib_global.h \
source/controllers/master-controller.h \ …Run Code Online (Sandbox Code Playgroud)