编译错误。 `std :: list <int> :: iterator`的构造函数是私有的

时间:2018-03-02 18:48:27

标签: c++ compiler-errors compilation

MAC OSX上,我正在尝试编译以下代码

#include <list>

int main()
{
    std::list<int>::iterator it(0);
    return 0;
}

当我运行g++ a.cpp -o a时,我得到了

a.cpp:5:27: error: calling a private constructor of class
      'std::__1::__list_iterator<int, void *>'
        std::list<int>::iterator it(0);
                                 ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/list:254:14: note: 
      implicitly declared private here
    explicit __list_iterator(__node_pointer __p) _NOEXCEPT : __ptr_(__p) {}

我的最终目标是编译this C++ code

修改

  

真的是gcc吗? MacOS喜欢将gcc别名为clang

我认为你是对的!

$g++ --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
  

查看this是否解决了您的问题(我不知道为什么clang会拒绝标准库实现&std :: list)。

mmhh ......还没有。我的路径是

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/TeX/texbin

which gcc表示/usr/local/bin/gcc。我可能不完全理解另一个答案。

0 个答案:

没有答案