c++ - 如何修复 Mac 上的 clang libc++ 错误 : calling private constructor

标签 c++ macos compiler-errors clang++ libc++

我正在尝试在 Mac OS X 10.10 上使用 Clang 和 libc++ 编译(私有(private))C++ 软件,但出现此错误:

error: calling a private constructor of class 'std::__1::__wrap_iter<unsigned short *>'

完整的错误信息 here .

谁能解释这个错误以及如何解决它? 一个导致此错误的小型独立代码示例以及如何重写它以使其正常工作的选项会很棒!

最佳答案

您要求提供一个显示错误的独立示例,但没有提供您自己的示例? stackoverflow 不是这样工作的,您应该展示代码而不是让人们猜测问题所在!

这会产生错误:

#include <vector>

void f(unsigned short* p)
{
    std::vector<unsigned short>::iterator i(p);
}

看起来好像您正在尝试从指针构造迭代器,这是无效的(它可能适用于某些编译器,但不可移植)。

您可以尝试使用指针算法来获取迭代器:

std::ptrdiff_t d = std::distance(vec.data(), p);
std::vector<unsigned short>::iterator i = vec.begin() + d;

这假设 p 确实指向 vector 的一个元素,否则 distance(vec.data(), p) 是未定义的。

关于c++ - 如何修复 Mac 上的 clang libc++ 错误 : calling private constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26906589/

相关文章:

c++ - 如何判断驱动器是否在没有管理员权限的情况下被 BitLocker 加密?

macos - 如何在 OS X Yosemite 中开发状态栏应用程序?

macos - 无法在优胜美地机器上使用 pem key 连接到 ec2 实例

macos - pip install xgboost with error Command "python setup.py egg_info"failed with error code 1 on mac (Python 2.7)

c# - 为什么此处的Visual Studio无法解决List?

c++ - Vector4叉积

c++ - 返回开关的三元运算符

c++ - 尝试从 boost::iostreams 访问源设备

c - 我无法在此代码中将字符串值赋予字符串变量。为什么?我也不明白错误信息

java - Java ArrayList自变量给出预期的<Identifier>