2013-08-04 48 views
0

初始化和轉換我寫了下面這行代碼在我的程序:「Int」和「const int的」在C++

const int *dims = {4}; 

但報道我下面的錯誤:

「的值類型INT不能用於初始化類型const int的」的實體

誰能告訴我發生了什麼事,並教我的方式來解決這個問題?(在條件的dims的陣列仍然const

+1

好吧,就像它說你不能用'4'初始化'const int *'。你爲什麼這樣做? – GManNickG

+0

因爲我想使用其他人編程的函數,它的參數爲const int * dims。我想使用int一個安全的方式,這樣我可以避免自動類型轉換等 – Cancan

+0

不知道這是否可以被視爲正確的選擇或安全的選擇:int dims1 = {4}; const int * dims = &dims1; – Cancan

回答

3

代碼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; 
2

編譯器正在抱怨,因爲您正在嘗試使用整數初始化指針。

您提到的函數可能期望傳遞一個數組。

const int dim[4] = {1,2,3,4}; 

foo(dim); 
相關問題