获得const结构和CIN的功能
Function receiving a const struct and cin commend
- 据我所知,当功能接收const时参数,函数无法更改它。所以,应该做什么当功能应更改参数时发生吗?(例如该函数包含" CIN"赞扬Const参数(。会是汇编错误吗?还是会运行但参数不要改变实践?
- 我尝试在下面的代码中进行一些测试。当我将
void read_student (Student students[], int size)
设置为void read_student (const Student students[], int size)
时,我会收到以下内容错误消息(这些只是其中一些(。这会发生吗?因为" const"参数和" cin"的组合表彰?如果是,我应该如何理解这些消息?
| 19 |错误:"操作员>>'无匹配(操作数类型为'std :: istream {aka std :: basic_istream}'和'const char [20]'(|
| 19 |错误:类型非const引用的初始化无效 "布尔&'从类型的" bool" |
类型| 19 |错误:从'const char*'到'short int'的无效转换 [-fpermissive] |
| 19 |错误:无法绑定rvalue'(简短int(((int((&(学生 ( (((sizetype((((((unsigned int(i( * 24U((( -> student :: name('至' int&'|
| 19 |错误:从'const char*'转换为'简短未签名 int'[-fpermissive] |
| 19 |错误:无法绑定rvalue'(简短的unsigned int(((int((&(学生 ( (((sizetype((((((unsigned int(i( * 24U((( -> student :: name('至' unsigned int& |
#include <iostream>
using namespace std;
const int max_students=3;
struct Student
{
char name [20];
float avg;
};
void read_student (const Student students[], int size) //const Student VS Student
{
for (int i=0; i<size; i++)
{
cout << "enter name and avg for student #" << i+1 << endl;
cin >> students[i].name >> students[i].avg;
}
}
void print_student (const Student students[], int size)
{
for (int i=0; i<size; i++)
cout << "name: " << students[i].name << "taverage: " << students[i].avg <<endl;
}
int main()
{
Student students[max_students];
read_student(students, max_students);
cout << "ell students: n";
print_student(students, max_students);
return 0;
}
您会遇到汇编错误,因为操作员>>不适用于在文档中看到的常数变量。因此,由于将变量设置为常数和使用操作员>>的组合而发生了错误。删除一个或另一个解决问题
这是您可以尝试自己查看的示例代码。
void Foo(int const x) {
std::cin >> x; // doesn't compile because operator>> not defined for int const
}
void Foo2(int x) {
std::cin >> x; // Compiles properly
}
在您的情况下,函数构造函数应为 read_student(Student students[], int size)
,因为在函数中修改了 students[]
。
错误行error: no match for 'operator>>' (operand types are 'std::istream {aka std::basic_istream}' and 'const char [20]')
指示此特定变量类型的无操作员>> Overloading存在,例如const char[]
。
我希望这能回答您的问题。
void print_student (Student *students, int size)
{
for (int i=0; i<size; i++)
cout << "name: " << students[i].name<<"taverage<<students[i].avg<<endl;
}
并称其为:
print_student (&students, size);
看起来像作业...你去那里:
void read_student(Student students[], int size) //const Student VS Student
{
for (int i = 0; i<size; i++)
{
cout << "enter name and avg for student #" << i + 1 << endl;
cin >> students[i].name >> students[i].avg;
}
}
提示很明显,//const Student VS Student
,现在是一个常数,这意味着在创建它的值之后无法更改。它们是确保必须在与它们的交互时创建新容器的好方法,而不是与容器内的值相连。
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- C++中的cin.ignore()函数不适用于整个流
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 如何在C++中获得"静态纯虚拟"功能?
- Problems with std::cin.fail()
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 获得const结构和CIN的功能
- CIN验证功能有时不会自动运行
- 与int dataype的CIN功能混淆
- CIN 在首次使用功能后不允许输入
- 如何将 cin 从主中继到功能并在主上方的结构
- 而在C 中的功能和CIN
- C++.从文件到功能,cin 在主要
- 参数传递与cin功能