c++ - “make_unique”不是“std”的成员
问题描述
我在 Linux Mint 19.2 上使用 g++-9 和 c++17。编译器实际上是在告诉我要包含<memory>
在我已经包含它的位置附近:
/home/luke/workspace/crab/Src/Brain/EpisodicMemory.cpp:2:1: note: ‘std::make_unique’ is defined in header ‘<memory>’; did you forget to ‘#include <memory>’?
1 | #include "EpisodicMemory.h"
+++ |+#include <memory>
2 | #include <memory>
我可以用这个最小的例子产生错误:
#include <memory>
int main(int argc, char** argv) {
std::unique_ptr<int> test = std::make_unique<int>(4);
return 0;
}
真的不知道怎么回事。
这是我的 CMakeLists.txt(因为你不相信我使用的是 c++17):
cmake_minimum_required(VERSION 3.10)
project(crab)
find_package(Qt5Widgets)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -Wall -O0 -g -fsanitize=address -std=c++17 -fPIC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
include_directories(${Qt5Widgets_INCLUDE_DIRS})
#file(GLOB BRAIN_FILES Brain/*.cpp Brain/*.h)
#add_executable(crab ${BRAIN_FILES} main.cpp)
add_executable(crab main.cpp)
target_link_libraries(crab Qt5::Widgets)
我认为链接 Qt 可能会改变我的编译器设置,但我不知道为什么会发生这种情况
解决方案
我通过用 set(CMAKE_CXX_STANDARD 17) 替换 -std=c++17 来修复它
推荐阅读
- c - C程序将字符指令从文本文件转换为字符串指令
- python - 在字典中搜索列表元素
- reporting-services - 一行上有多个 SSRS IIF 语句
- jmeter - 保存图形时Jmeter抛出错误
- javascript - 如何在不先发送任何消息的情况下向用户添加角色?
- spring - 是什么创建了准确的实现:自定义存储库或为多个参数扩展 JpaSpecificationExecutor
- sharepoint-online - 重命名站点页面文件夹中的页面(.aspx 文件)(通常)不会像应有的那样更改超链接。是什么赋予了?
- reactjs - 如何在反应中创建用于在表中搜索的搜索过滤器
- javascript - 所以,这是一个聊天应用程序,但在下面的代码中,我无法在用户之间建立连接
- docker - Docker Compose 中的 Nginx API 网关