我在C#,PHP和其他的東西轉身C++時間長了以後,我發現一些奇怪:C++的strcpy非恆定表達陣列結合
temp.name = new char[strlen(name) + strlen(r.name) + 1];
這個編譯
temp.name = (char *)malloc(sizeof(char[strlen(name)
+ strlen(r.name) + 1]));
這不(temp.name是一個char *)
編譯器錯誤是
錯誤C2540:非常量表達式 作爲數組邊界
有誰知道這個問題可能是,它會如何補救?謝謝。
如果您使用C++,請忘記char數組並使用std :: string。 – 2010-01-24 17:35:09
雖然程序文本看起來相同,但語義卻非常不同。 *有* C *中的數組類型,其大小爲零或運行時值。但是這些數組類型只能通過'new-type-id'來尋址。聲明數組的類型說明符不使用new-type-id,因此它們無法表示這些「奇特」類型。嘗試編寫'new(char [strlen(name)]);'或'new(char [0]);'並且注意如何用符合編譯器的方式失敗:因爲括號會使編譯器形成一個'type -id'而不是'new-type-id'。類似的,'sizeof'需要一個'type-id'。 – 2010-01-24 18:09:37