作者:似风似戏是梦而已 | 来源:互联网 | 2023-01-15 16:33
输入以下代码后,我会收到错误.
const int quantity;
cout <<"How much spacing do you want in-between the frames? " ;
cin >> quantity;
错误:未初始化的const'数量'[ - fpermissive]
错误:'operator >>的模糊重载
如果我只使用int类型,就不会发生这种情况
int quantity;
cout <<"How much spacing do you want in-between the frames? " ;
cin >> quantity;
哪个编译没有问题.我是C++的新手,所以我想知道为什么会这样.
1> templatetype..:
如果将变量定义为
const int quantity;
你说的是"我喜欢int
被叫quantity
,在任何情况下我都不希望它的价值永远改变." 结果,如果你再写
cin >> quantity;
编译器说"等待 - 你希望我quantity
用用户输入的任何内容替换它来改变它的价值" ,但早些时候你说你从来没有想让我改变它!
我的感觉是你想要这样做,以便在给出该值的初始值后quantity
永远不会改变,但是对于const
变量,在创建变量时需要设置初始值.你可以尝试这样的事情:
const int quantity = readValue();
对于某些readValue()
读取和返回int
值的函数.这样,编译器看到quantity
给定一个固定值,它知道值永远不会改变,你永远不会尝试直接cin
进入值quantity
.
有关您所获得的错误的更多技术观点:编译器读取时
const int quantity;
它没有赋值给它,它报告了一个错误,因为创建一个常量而不给它一个值是不常见的.(我可以从你的代码中看出你打算给它一个值,但你做它的方式不合法,编译器没有将这两个东西拼凑在一起).第二个错误operator >>
是因为没有任何不同的方法可以读取cin
(读取字符串,读取int
,读取char
等)应用,因为他们每个人都认为他们可以得到一个可变(可修改)的视图有问题的价值.同样,这两个问题都源于这样一个事实,即编译器将您的代码视为两个独立的独立错误而不是一个大的"oops,这不是多么const
有效"的错误.