尝试访问dynamic_bitset中的私有成员

用户名

我正在使用Visual Studio 2017构建LucenePlusPlus,后者依次使用boost / dynamic_bitset。

LucenePlusPlus中的以下代码

const uint64_t* BitSet::getBits() {
    return bitSet.empty() ? NULL : static_cast<const uint64_t*>(&bitSet.m_bits[0]);
}

生成以下致命的编译器错误:

1>g:\luceneplusplus\src\core\util\bitset.cpp(20): error C2248: 'boost::dynamic_bitset<uint64_t,std::allocator<Block>>::m_bits': cannot access private member declared in class 'boost::dynamic_bitset<uint64_t,std::allocator<Block>>'
1>        with
1>        [
1>            Block=uint64_t
1>        ]

有什么建议吗?

我已经跟踪了boost 1_75_0的代码,并且看到了一个定义,可以有条件地保留对朋友的访问权限:

#if defined(BOOST_DYNAMIC_BITSET_DONT_USE_FRIENDS)
#define BOOST_DYNAMIC_BITSET_PRIVATE public
#else
#define BOOST_DYNAMIC_BITSET_PRIVATE private
#endif

因此,看起来您应该能够添加-DBOOST_DYNAMIC_BITSET_DONT_USE_FRIENDS到编译器定义中以解决此问题。

实际上,我的LucenePlusPlus树已经在第107行的include / config_h / Config.h。中包含了它:

 #define BOOST_DYNAMIC_BITSET_DONT_USE_FRIENDS

以前(“重建的cmake构建系统”)显然来自include / Config.h.cmake,该位置始终存在,自2010年以来一直存在: 在此处输入图片说明

你能做什么?

也许您不包括包含配置的必需标头?还要检查任何干扰的预编译头设置。

如果您boost/dynamic_bitset.hpp在任何时候包括了LucenePlusPlus标头,那么您将使用错误的配置运行。

如果您未检测到它,则尤其糟糕,因为这会违反ODR规则

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Java访问私有成员中的私有成员

在 JavaScript 构造函数中访问私有成员

子类访问父类中的私有成员变量

无法从C ++中的类内部访问私有成员?

在 .cpp 文件中实现时访问私有成员

PowerMock访问私有成员

私有成员访问Java

从特权方法访问私有成员

C ++:访问该类的私有成员

尝试传递CStringArray给出错误,无法访问类'CObject'中声明的私有成员

尝试访问类的私有成员以明确过载的方式是否错误?

Python中的私有成员

Java继承中的私有成员

使公共成员变量访问C ++中同一类的私有成员

在公共成员函数内部访问私有成员变量

通过引用访问器访问私有成员

在OOP中,私有成员对谁私有?

生成的 WCF 客户端尝试序列化 Dynamics 365 中的私有成员

JDK 7中有关私有成员访问的javac行为更改

派生类不能访问私有成员(尽管构造函数是在基类中定义的)

Java中的兄弟级嵌套类可以访问彼此的私有成员

什么阻止你在包中声明额外的类,让你访问包私有成员

错误C2248:无法访问在类中声明的私有成员

如何在 JavaScript 中访问超类的私有成员?

在Java嵌套类中,封闭类可以访问内部类的私有成员吗?

如何启用朋友类的朋友功能直接在C ++中访问其私有成员

Swift中的朋友类(访问内部类的私有成员)

访问同一文件中类的私有成员的函数

无法访问在类中为make_unique声明的私有成员