cppcheck在const std :: string []上抛出警告

Muk*_*uma 14 c++ cppcheck

我正在努力警告cppcheck(Linux机器上的版本1.85)正在报告:

someFile.h:23:29:警告:冗余代码:找到一个以字符串常量开头的语句.[constStatement]
const std :: string OffOn [] = {"off","on"};
^

我做了一些研究,发现将声明改为

const std::string OffOn[]= {std::string("off"), std::string("on")};
Run Code Online (Sandbox Code Playgroud)

删除警告.但是我不明白发生了什么,以及我的第一个解决方案有什么"坏".也许有人可以向我解释一下?或者给我一些提示!

Den*_*kov 17

它建议你使用braced-init-list类似的初始化:const std::string OffOn[]{"off", "on"};,所以这=是不必要的.

  • 这可能是挑剔,但在这种情况下,`{...}`不是`std :: initializer_list`.这是一个'braced-init-list`. (5认同)
  • 无论如何,这显然是一个错误;这里没有“冗余代码” (2认同)