為什么我不能從用戶那里讀取一個值并將其設置為常量? [英] Why can't I read a value from the user and make it a constant?

查看:0
本文介紹了為什么我不能從用戶那里讀取一個值并將其設置為常量?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

輸入以下代碼后,將出現錯誤。

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;
您說的是"我想要一個名為quantityint,在任何情況下我都不希望它的值發生變化。"因此,如果您隨后編寫

cin >> quantity;

編譯器所說的大意是"等待--您希望我更改quantity的值,將其替換為用戶輸入的任何內容,但前面您說您永遠不希望我更改它!"

我的感覺是,您希望在為quantity提供初始值之后,該值永遠不會更改,但對于const變量,需要在創建變量時設置該初始值。因此,您可以嘗試執行以下操作:

const int quantity = readValue();

對于讀取并返回int值的某些函數readValue()。這樣,編譯器會看到quantity被賦予了一個固定值,它知道該值永遠不會改變,并且您永遠不會嘗試將cin直接轉化為quantity的值。

有關您收到的錯誤的更多技術視角:當編譯器讀取

const int quantity;

如果沒有賦給它任何值,它會報告一個錯誤,因為創建一個常量而不給它賦值是不尋常的。(我可以從您的代碼中看出,您的意思是給它賦值,但是您這樣做的方式是不合法的,編譯器沒有將這兩件事拼湊在一起)。關于operator >>的第二個錯誤是因為您可以從cin讀取內容的不同方式(讀取字符串、讀取int、讀取char等)。)應用,因為它們中的每一個都假設它們可以獲得相關值的可變(可修改)視圖。同樣,這兩個問題都源于這樣一個事實,即編譯器將您的代碼視為兩個獨立的錯誤,而不是一個大型的const工作方式錯誤。

這篇關于為什么我不能從用戶那里讀取一個值并將其設置為常量?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持IT屋!

查看全文
相關文章
登錄 關閉
掃碼關注1秒登錄
發送“驗證碼”獲取 | 15天全站免登陸
全免费A级毛片免费看无码播放