【问题标题】:c++ Error with literal initialize pointer with curly brace [duplicate]c ++错误用花括号初始化指针[重复]
【发布时间】:2018-09-13 21:21:15
【问题描述】:

我正在学习 C++ 的新知识。 在我的教科书中,有一个非常简单的例子。

int* ip = nullptr; // (ok)
int* ip1{}; // (error)
int* ip2{nullptr}; // (error)

unique_ptr<double> dp{new double}; // (error)

但是我在构建它时遇到了这个错误。

/Users/bsdo/projects/CPlus/modernbook/include/basis.cpp:81:30: error: expected ';' at end of declaration
    unique_ptr<double> dp{new double};
                         ^
                         ;
In file included from     /Users/bsdo/projects/CPlus/modernbook/main.cpp:2:
/Users/bsdo/projects/CPlus/modernbook/include/basis.cpp:81:30: error: expected ';' at end of declaration
    unique_ptr<double> dp{new double};
                         ^
                         ;
/Users/bsdo/projects/CPlus/modernbook/main.cpp:10:13: error: expected ';' at end of declaration
int* ip1{nullptr};
        ^
        ;

为什么只有花括号字面量会抛出错误??

我的环境是 Mac book pro 2015、Cmake-3.11、Apple LLVM 版本 9.1.0 (clang-902.0.39.1)。

【问题讨论】:

  • 必答问题...您在构建时启用了 C++11 吗?
  • 真可惜.. 我重置了我的 cmakelist 设置。并修复它!谢谢@StoryTeller
  • 您的问题看起来好像教科书示例声称除了第一行之外的所有内容都应该导致错误,但我猜这些 cmets 是您的,而不是来自书中

标签: c++ c++11 cmake


【解决方案1】:

只要让 cmake 编译 c++11..

配置是在CmakeLists.txt中写下这一行

set (CMAKE_CXX_STANDARD 11)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多