热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么我不能从用户读取值并使其成为常量?

如何解决《为什么我不能从用户读取值并使其成为常量?》经验,为你挑选了1个好方法。

输入以下代码后,我会收到错误.

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有效"的错误.


推荐阅读
author-avatar
似风似戏是梦而已
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有