当前位置:  开发笔记 > 编程语言 > 正文

这个片段有什么问题?

如何解决《这个片段有什么问题?》经验,为你挑选了1个好方法。

我不知道这个片段有什么问题.我收到这个错误:

错误:成员函数'swap'不可行:'this'参数的类型为'const array',但函数未标记为const

#include 
#include 
#include 
#include 

struct MyClass {
  std::array arr;  
  float carr[4];

  std::array getArrElement() {
    std::array out;
    return out;
  }

  void fun() {
    auto vec = { getArrElement(), getArrElement(), getArrElement() };
    std::reverse(vec.begin(), vec.end()); // <-- error line here
  }


};

int main()
{
    MyClass obj;
    obj.fun();
}

getArrElement没有返回一个const数组.auto应该推断,std::initializer_list但我也认为没有坏处.

怎么了?



1> Jonathan Wak..:

一个std::initializer_list只有常量迭代器,所以你不能改变它的元素.

一个initializer_list 不是一个容器,不能被视为一个容器.它是编译器已知的特殊hack语言支持类型,用于支持特定语法.不要试图将它用作通用容器或序列类型.

你可以做:

using elem_type = decltype(getArrElement());
std::vector vec = { getArrElement(), getArrElement(), getArrElement() };
std::reverse(vec.begin(), vec.end());

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有