gpt4 book ai didi

c++ - 带有大括号的 char 数组的非静态成员初始化在 gcc 中给出了一个错误,而不是在 clang 中

转载 作者:可可西里 更新时间:2023-11-01 15:03:03 25 4
gpt4 key购买 nike

考虑以下代码:

#include <iostream>

class A
{
char name[40] = { "Blank" }; // note the braces here
public:
const char *getName() { return name; }
};

int main()
{
A a;

std::cout << a.getName() << std::endl;
}

它在 gcc(最新版本 5.2.0)中给出错误:

prog.cpp:5:28: error: invalid conversion from 'const char*' to 'char' [-fpermissive]
char name[40] = { "Blank" };
^

clang 并非如此,它可以使用 -std=c++11 -pedantic -Wall 完美编译。

在这里为非静态初始化器放大括号真的不正确吗?

AFAIR 有没有大括号并不重要。比如数组的定义,如:

char text[] = "some text";

相当于:

char text[] = { "some text" };

最佳答案

该代码有效,现在已被 GCC 主干接受。我认为它是由 PR 65815 brace elision doesn't work in NSDMI 修复的

关于c++ - 带有大括号的 char 数组的非静态成员初始化在 gcc 中给出了一个错误,而不是在 clang 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31558785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com