'make_unique'不是'std'的成员
'make_unique' is not a member of '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可能会改变我的编译器设置,但我不知道为什么会发生这种情况
我通过将 -std=c++17 替换为 set(CMAKE_CXX_STANDARD 17( 来修复它
相关文章:
- std::ofstream 作为类成员删除复制构造函数?
- 使用 std::index_sequence 初始化具有固定大小数组成员的 POD 结构容器
- std::to_string - 'to_string' 不是 'std' 的成员 - Visual Studio Code 1.42.0
- 使用 std::async 时死锁,将来作为成员
- 访问 std:vector 的类成员 std:vector 在一个类中与另一个 std:vector
- 将此类的智能指针追加到成员 std::vector
- 在Visual Studio中删除成员std::vector::d ata()
- C++初始化/填充静态成员 std::数组元素到特定值
- 是否可以在同一对象中对成员 std::shared_ptr 进行成员引用<variable>?
- 成员std::future防止boost::shared_ptr超出范围
- 在GCC中使用Brace Initializer初始化成员STD ::数组时错误
- 错误:非静态引用成员"std::ostream&Student::out",无法使用默认赋值运算符
- 获取指向成员std::string::size的指针无法与libc++链接,但可以与libstdc++一起使用
- 如何创建静态常量成员 std::string 数组
- 如何在构造函数初始值设定项列表中初始化“std::unique_ptr”对象的类成员“std::vector”
- C++ 编译失败,并显示错误:命名空间中没有名为 'snprintf' 的成员'std'
- 重载类下标运算符以访问成员std::vector对象的元素
- 构造类成员 std::vector<std::unique_ptr > 的智能方法<AClass>
- 使用成员std::vector移动语义
- 初始化类成员std::函数时编译错误