我有一个填充空缓冲区(char *)的函数。它看起来像:传递一个缓冲区和缓冲区的大小作为参数
void Matrix::toString(char* buffer, int sizeBuffer) const{
char buf[sizeBuffer];
//some code to fill buf
//copy buf into buffer
}
它是完美的工作,直到我在QtCreator带来的功能与我的新GUI使用它。编译器告诉我他预期恒定表达式而且他不能分配恒定大小的数组0和buf:未知大小。
我搜索了一下,我发现我不得不动态分配我的数组。它正在工作,但现在我想知道为什么我不能在堆栈上分配它?这是不好的编码?而且,为什么它以前工作? 谢谢
你能显示代码吗?你为什么使用char数组而不是std :: string,QbyteArray或QString? – UmNyobe
要在堆栈中分配数组,编译器必须知道数组的大小,因此它必须在运行时指定。这就是为什么你收到的错误是'未知的大小'。正如@UmNyobe所说,你最好使用QString或QByteArray而不是char数组。 – TheDarkKnight