为什么以下initializer_list函数失败?

 嘻嘻嘻嘻 发布于 2023-01-05 22:09

在使用initalizer_list练习函数时,我正在密切关注本书示例(关于C++入门)需要帮助来调试它失败的原因:

#include 
#include 
#include 
#include 
#include 
#include 

using std::cout;   using std::endl;
using std::cin;    using std::cerr;  
using std::begin;  using std::end;           /* lib begin and end function (for arrays) */
using std::vector;
using std::string; using std::setw;  
using std::left;   using std::right;         /* align print out result */
using std::initializer_list;

void error_msg(initializer_list il) {
  for(const auto &elem : il)
    cout << elem << " ";
  cout << endl;

}

int main(int argc, char *argv[]) {

  string expected = "Hello", actual = "There";

  error_msg("FunctionX: ", expected, actual);

  return 0;

}

它得到编译错误:

g++ -O0 testerrormsg.cpp -lm -o testerrormsg -g -Wall -lpthread -std=c++11
testerrormsg.cpp: In function ‘int main(int, char**)’:
testerrormsg.cpp:27:44: error: could not convert ‘(const char*)"FunctionX: "’ from ‘const char*’ to ‘std::initializer_list >’

另外,我可以问几个问题,因为它是initializer_list相关的:

    请注意,在上面的代码示例(来自本书)中,参数的类型为"char*,std :: string,std :: string".那么,这是否意味着只要所有参数都可以隐式转换为声明的std::string类型(在foo声明中),它是合法的?

    (摘自本书)"initializer_list是表示值数组的库类型".我以前从未见过这样的措辞.一组值一组对象相比有什么不同?

提前致谢.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有