当前位置: 首页 > 知识库问答 >
问题:

无法在gcc中创建std::pair的常量成员

柳韬
2023-03-14
std::vector< std::pair< const QTextCharFormat, std::vector< std::tr1::regex > > > foo;
std::vector< std::pair< const QTextCharFormat, std::vector< std::tr1::regex > > > bar;

无法在gcc 4.6.3上工作,因为我无法调用:<代码>栏。向后推(std::make\u pair(foo.first,foo.second)) 这在Visual Studio上编译并运行良好,但在gcc下我得到:

/usr/include/c/4.6/bits/stl\U对。h: 156:2:错误:将“const QTextCharFormat”作为“QTextCharFormat”的“this”参数传递

是否有Visual Studio跳过的在gcc下创建的中间层?

共有2个答案

杜良骏
2023-03-14

嗯,条形图是一个标准向量

foo也是一个std::vector,因此需要选择一个元素,然后才调用。第一个或。第二个:

bar.emplace_back(foo[i].first, foo[i].second);

但从您使用它的方式来看,您很可能在条形图和foo的定义中错误地添加了太多的std::vector。

慕容光启
2023-03-14

从这个答案中:

向量中的项必须是可赋值的。const对象是不可赋值的,因此尝试将它们存储在向量中会失败(或者至少会失败——代码是无效的,但编译器无论如何都可以接受它,如果它这样选择的话,尽管大多数程序员通常更希望拒绝无效代码)。

 类似资料:
  • 我不知道如何创建以下内容: 我总是得到 /usr/include/c/5.5.0/bits/stl_对。h:139:45:错误:使用已删除的函数'std::atomic::atomic(const std::atomic 我已经试过了 我知道std::atomic是不可复制的,那么你应该如何创建一对呢?难道这不可能吗?

  • 我不熟悉<code>std::map</code>,最近才开始使用它。 我遇到了其中一个映射的编译问题。 我有一个自定义结构,并试图用该结构类型的对象创建一个< code>CString的映射。 不幸的是,我遇到了问题

  • 问题内容: 有没有办法在Python中声明常量?在Java中,我们可以按以下方式创建常量值: Python中上述Java常量声明的等效项是什么? 问题答案: 不,那里没有。你无法在Python中将变量或值声明为常量。只是不要更改它。 如果你正在上课,则等价于: 如果不是,那只是 但是你可能想看看Alex Martelli 编写的Python代码片段中的Constants。 从Python 3.8开

  • 两者之间有实际区别吗 和 ? 看起来包含常量元素的非常量数组仍然无法交换,赋值运算符也不起作用<我什么时候应该选择一个而不是另一个?

  • 我可以创建std::数组: 它很好用。但我无法创建向量: 这给了我一个错误:

  • 问题内容: 我有一个调用sin,cos和acos的ac程序。编译时出现以下错误: 我知道当您不使用-lm gcc标志时这很常见。我正在使用此标志。我这样称呼GCC: 当我在其中一台计算机上进行编译时,这可以正常工作。我能想到的唯一区别是,它不能在x86_64上运行,而可以在其上运行的计算机是i686。两者都是Ubuntu。文件libm.a存在于无法使用的计算机上,并且我没有收到任何错误消息称无法找