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

二进制“[”:“std::initializer\u list”未定义此运算符或到预定义运算符可接受的类型的转换

林鸿彩
2023-03-14

如何访问使用auto关键字声明的此初始化程序的值?

auto arr = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
auto a = arr[0];

在VS上给出以下编译错误:

二进制“[”:“std::initializer\u list”未定义此运算符或到预定义运算符可接受的类型的转换

共有2个答案

薛修能
2023-03-14

您可以使用迭代器遍历初始化器列表。函数start()返回指向初始化器列表中第一个元素的指针。

int main() {

    auto arr = { "one", "two", "three", "four", "five", "six",
              "seven", "eight", "nine" };
    auto a = *arr.begin();
    auto b = *( arr.begin() + 1);

    cout << a << "," << b; // prints: one,two

    return 0;
}
穆才良
2023-03-14

查看std::initializer\u list的界面:

auto arr = { "one", "two", "three", "four", "five", "six",
              "seven", "eight", "nine" };
auto a = *arr.begin();

(或者,为了更实用,使用括号初始化容器或数组-列表)

 类似资料:
  • 问题内容: 我只是试图制作一个简单的类,让我弄清楚文件的长度: 我遇到了一个问题 我得到错误: 未为参数类型定义运算符!= int,null 有什么想法为什么会阻止这种情况吗? 问题答案: Java中的原始类型不能为。如果要检查0,请执行。

  • 我的Java代码没有什么问题。我正在使用下面的代码,但Eclipse总是提示相同的消息“参数类型Test1,int的运算符未定义”。但是如果我将代码更改为“System.out.println(test1”“100);”或“System.out.println”(“100 test1”)或“System.out.println(100”“test1);”,没有问题。 有人对此有想法吗?请帮忙。多谢

  • 在我的代码中,我一直得到这样的错误:操作符!=对于参数类型boolean和int是未定义的,我不知道该怎么做来修复它。该错误出现在eclipse内部以及启动时 如有帮助,我们将不胜感激:)谢谢!

  • 自定义运算符 struct Vector2D { var x = 0.0 var y = 0.0 } infix operator +++ extension Vector2D { static func +++ (left: Vector2D, right: Vector2D) -> Vector2D { return Vector2D(x: left

  • 我正在尝试编译以下代码: VS2012 C编译器返回以下编译错误: ... VC\包含\实用程序(219):错误C2678:二进制 '==': 找不到运算符,该运算符采用“const Point”类型的左侧操作数(或者没有可接受的转换) GCC C编译器返回以下编译错误: /usr/include/c /4.8/bits/stl_pair.h: 在'bool std::运算符==(constd::

  • 问题内容: JavaScript中的另一种常见情况是为变量提供预设值(如果未定义),例如: 快捷方式表示法是双竖线字符: 由于某种原因,我无法为我工作。是否真的有可能检查是否定义了v,如果x = 10则不定义? 谢谢。 问题答案: 该Opera文章对正在发生的事情给出了不好的描述。 确实会得到if is 的值。如果具有 任何 “假”值也将是正确的。 __ JavaScript中的“ falsey”