error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]

XIVN1987 1月前 12

《 C++ Crash Course 》上有个例程如下:
``` c++
struct JohanVanDerSmut
{
bool gold = true;
int year_of_smelting_accident{1970};
char key_location[8] = {"x-rated"};
};
```

我编译后程序报错:
error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
char key_location[8] = {"x-rated"};
^

是编译器版本的问题吗??我用的是 gcc 5.4
最新回复 (8)
  • wssy 27天前
    引用 2
    这段代码应该是没有问题的,得参考下 cppreference 中的 copy-initialization 。
    我看下资料才行。

    你开启 c++11 了吗?
  • Chihaya0824 27天前
    引用 3
    char key_location[8] = {'x-rated'};试试?
  • Chihaya0824 27天前
    引用 4
    @Chihaya0824 RE #2 我傻了()肯定不对的
  • wssy 27天前
    引用 5
    刚刚看了,这个是 aggregate-initialization 的一种特例,就算 11 以前也是支持的。
    你看看是不是前面某些地方出了些错误,导致后面连着错。。。
  • msg7086 27天前
    引用 6
    int main() { std::cout << __cplusplus << std::endl; }

    GCC 5.4 = 199711 = C++98

    可以看这里 https://gist.github.com/ax3l/53db9fa8a4f4c21ecc5c4100c0d93c94
  • 楼主 XIVN1987 27天前
    引用 7
    @msg7086

    我加了 -std=c++14 选项的,,不加这个选项会报下面的警告

    warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
  • msg7086 27天前
    引用 8
    @XIVN1987 我用 G++尝试编译了,C++11/14/17/2x 都能过。

    你可以把比较完整的源码贴到 gist,连带你编译的命令一起贴出来看看。
  • 楼主 XIVN1987 27天前
    引用 9
    @msg7086

    感谢,,用新版编译器编译确实没问题了
  • 游客
    10
返回