c++ - 在 C++ 类中创建一个数组而不声明其大小

标签 c++ arrays

当我创建一个数组但没有在类中声明其大小时,它不会给出任何错误 它工作正常,但为什么呢?这只发生在类内部,当我在我的主要函数中做同样的事情时,它会出错。

class B {
private:
     char array[]; 
public:
    ///.....///
};

最佳答案

看来您的编译器实现了灵活的数组成员(C 语言功能)作为对 C++ 的扩展。

在启用标准合规性的情况下编译您的程序,会产生以下诊断信息:

clang :

main.cpp:3:11: error: flexible array member 'array' in otherwise empty class is a GNU extension [-Werror,-Wgnu-empty-struct]
     char array[]; 
          ^
main.cpp:3:11: error: flexible array members are a C99 feature [-Werror,-Wc99-extensions]

海湾合作委员会:

test.cc:3:17: error: ISO C++ forbids zero-size array 'array' [-pedantic]

IBM:

"test.cc", line 3.11: 1540-2887 (S) A flexible array member is not permitted in this scope.

甲骨文:

"test.cc", line 3: Error: In this declaration "array" is of an incomplete type "char[]".

PS:请注意,您使用它的方式在 C 中也是一个错误:在灵活之前您至少需要一个命名成员

关于c++ - 在 C++ 类中创建一个数组而不声明其大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22388540/

相关文章:

javascript - ES5 定义不可更改的数组/属性值

c++ - 如何从 dbx 的 pretty-print 函数调用 dbx 自己的打印函数

c++ - 修剪十分之一和千分之几的算法

JavaScript:搜索特定值的对象数组

javascript - 如何将值与嵌套数组中的其他对象进行比较?

javascript - 获取javascript中具有最高值的数组键

javascript - Jquery数组通过ajax发送到php

c++ - 阵列滚动 2 个骰子

c++ - 如果输入的数字不是完全正方形,要找到最接近的完全正方形?

c++将格式化的字符串作为参数传递给函数