為什么我不能從用戶那里讀取一個值并將其設置為常量? [英] Why can't I read a value from the user and make it a constant?
本文介紹了為什么我不能從用戶那里讀取一個值并將其設置為常量?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
輸入以下代碼后,將出現錯誤。
const int quantity;
cout << "How much spacing do you want in-between the frames? " ;
cin >> quantity;
錯誤:未初始化常量‘Quantity’[-fpermissive]
錯誤:‘OPERATOR>>’的重載不明確
如果我只使用類型int
,則不會發生這種情況int quantity;
cout << "How much spacing do you want in-between the frames? " ;
cin >> quantity;
,編譯時沒有問題。我是C++新手,所以我只想知道為什么會這樣。
推薦答案
如果將變量定義為
const int quantity;
您說的是"我想要一個名為quantity
的int
,在任何情況下我都不希望它的值發生變化。"因此,如果您隨后編寫
cin >> quantity;
編譯器所說的大意是"等待--您希望我更改quantity
的值,將其替換為用戶輸入的任何內容,但前面您說您永遠不希望我更改它!"
quantity
提供初始值之后,該值永遠不會更改,但對于const
變量,需要在創建變量時設置該初始值。因此,您可以嘗試執行以下操作:
const int quantity = readValue();
對于讀取并返回int
值的某些函數readValue()
。這樣,編譯器會看到quantity
被賦予了一個固定值,它知道該值永遠不會改變,并且您永遠不會嘗試將cin
直接轉化為quantity
的值。
有關您收到的錯誤的更多技術視角:當編譯器讀取
const int quantity;
如果沒有賦給它任何值,它會報告一個錯誤,因為創建一個常量而不給它賦值是不尋常的。(我可以從您的代碼中看出,您的意思是給它賦值,但是您這樣做的方式是不合法的,編譯器沒有將這兩件事拼湊在一起)。關于operator >>
的第二個錯誤是因為您可以從cin
讀取內容的不同方式(讀取字符串、讀取int
、讀取char
等)。)應用,因為它們中的每一個都假設它們可以獲得相關值的可變(可修改)視圖。同樣,這兩個問題都源于這樣一個事實,即編譯器將您的代碼視為兩個獨立的錯誤,而不是一個大型的const
工作方式錯誤。
這篇關于為什么我不能從用戶那里讀取一個值并將其設置為常量?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持IT屋!
查看全文