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