初始化和轉換我寫了下面這行代碼在我的程序:「Int」和「const int的」在C++
const int *dims = {4};
但報道我下面的錯誤:
「的值類型INT不能用於初始化類型const int的」的實體
誰能告訴我發生了什麼事,並教我的方式來解決這個問題?(在條件的dims
的陣列仍然const
)
初始化和轉換我寫了下面這行代碼在我的程序:「Int」和「const int的」在C++
const int *dims = {4};
但報道我下面的錯誤:
「的值類型INT不能用於初始化類型const int的」的實體
誰能告訴我發生了什麼事,並教我的方式來解決這個問題?(在條件的dims
的陣列仍然const
)
代碼const int *dims = {4};
手段分配終場前4 但是你爲什麼要一個指針指向的內存位置4的值會變暗:你可以用一個常量數組如下調用它呢?這是不太可能的,這是你想要做的事情,這是不允許的。
以下是得到一個指針指向一個const int的具有值4的一些選項:
const int *dims = new int(4); // beware someone needs to delete dims
對於自動壽命,如在堆棧上:
const int autoDims(4); // Will be deleted when autoDims goes out of scope
const int *dims(&autoDims);
或:
const int dims[] = {4}; // Will be deleted when dims goes out of scope
如果你真的想要一個值爲4的指針,你必須明確地轉換成指針類型:
const int *dims = (int *)4;
編譯器正在抱怨,因爲您正在嘗試使用整數初始化指針。
您提到的函數可能期望傳遞一個數組。
const int dim[4] = {1,2,3,4};
foo(dim);
好吧,就像它說你不能用'4'初始化'const int *'。你爲什麼這樣做? – GManNickG
因爲我想使用其他人編程的函數,它的參數爲const int * dims。我想使用int一個安全的方式,這樣我可以避免自動類型轉換等 – Cancan
不知道這是否可以被視爲正確的選擇或安全的選擇:int dims1 = {4}; const int * dims = &dims1; – Cancan