SSTREAM通过公共访问编译器错误重新编辑
sstream redeclared with public access compiler error
我在使用GCC5.4.0的大型项目上运行时遇到了此错误。
/usr/include/c++/5/sstream:300:14: error: '__xfer_bufptrs' redeclared with 'public' access
struct __xfer_bufptrs
^
/usr/include/c++/5/sstream:67:14: note: previously declared 'private' here
struct __xfer_bufptrs;
对我来说,编译器似乎是一个问题吗?既然该问题出现在标准的C 库Sstream中?这对我来说没有意义,我使用错误的编译器吗?
这是代码段,错误消息请参阅:
1。)Sstream从第67行
开始class basic_stringbuf : public basic_streambuf<_CharT, _Traits>
{
struct __xfer_bufptrs;
public:
2。)Sstream在第300行
处#if _GLIBCXX_USE_CXX11_ABI
// This type captures the state of the gptr / pptr pointers as offsets
// so they can be restored in another object after moving the string.
struct __xfer_bufptrs
{
__xfer_bufptrs(const basic_stringbuf& __from, basic_stringbuf* __to)
: _M_to{__to}, _M_goff{-1, -1, -1}, _M_poff{-1, -1, -1}
{
我知道标准库没有任何问题,所以为什么会丢下错误?
这是我最接近的答案:https://github.com/pacificbiosciences/pbbam/issues/14
似乎答案围绕着这些" dprivate"answers" dpublic"旗帜旋转。我认为这是编译器标志,但我不确定他们的作用。
尽管Github的线程击中了现场,但似乎错过了原因。您很可能是在项目中构建一些单元或其他测试,以重新定义这样的"私人"关键字:
#define private public
或通过命令(-Dprivate=public
)进行相应的事情。这是一种常用的实践,用于暴露私人成员进行测试,而无需使经过测试的代码取决于测试代码。但是,看看您的片段。第一个声明__xfer_bufptrs
为私有,无论您对private
的定义如何。下一个第二个摘要肯定是在明确的private
块中(尚未检查)。现在,如果您对私有的定义已经存在,您将在第二个摘要中使用public
来ned。
您至少有两个选项,另外还有可能:
- 您的
#undef
私人定义包括系统标头并在包含这些标题后再次定义,或者 - 您使用另一个宏来定义自己的私人/公共部分,例如:
#define my_public public
可以随意重新定义。但是,这个解决方案似乎很奇怪;)
哦,对于未来,在您自己的代码中,始终使用明确的访问资格,以避免使用自己的代码来避免这种混乱:)
相关文章:
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 编辑文件中的文本
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- SetDlgItemInt 不会更改嵌入资源的编辑框
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- C++,Qt:仅在双击后编辑qtablewidget项目
- 编辑字符串以包含括号 c++ 之间的变量
- Arduino函数无法编辑数组
- 调试符号中缺少 QObject 类信息(编辑但存在其他 Qt 类)
- "未定义对'WinMain@16'的引用"gcc 编辑器中的错误
- C++MFC编辑框处理双击
- UE4 - Visual Studio在我从编辑器添加新的c ++文件后无法打开任何源文件 - UBT_COMPILED
- C++/RapidXML:编辑节点并写入新的 XML 文件没有更新的节点
- 如何限制文件大小,以便我的程序在变大之后创建一个新文件?并编辑新创建的文件的名称
- 为什么在编辑 fastq 文件并将输出写入新的 fastq 文件时引入不可打印字符?
- C++,打开和编辑文本文件中的数字数据,并将结果放入新文件中
- 添加新库以编译任何术语.如何编辑生成文件
- wxGrid 在用户编辑单元格后显示旧值而不是新值
- 新编辑:当我尝试运行程序时,继续收到消息"Segmentation Fault: 11",有什么想法吗?
- 如何编辑SFML源代码来添加一个新的可绘制对象