函数接受一个const结构和cin推荐

希克
  1. 据我所知,当一个函数接收一个const参数时,该函数无法更改它。那么,当函数应该更改参数时应该发生什么呢?(例如,该函数包含推荐给const参数的“ cin”)。会是编译错误吗?还是会运行但参数在实践中不会改变?
  2. 我试图在下面的代码中进行一些测试。当我从设置void read_student (Student students[], int size)void read_student (const Student students[], int size),我收到以下错误消息(这些只是其中的一些)。是否因为“ const”参数和“ cin”推荐值的组合而发生?如果是,我应该如何从这些消息中了解这一点?

| 19 |错误:与“ operator >>”不匹配(操作数类型为“ std :: istream {aka std :: basic_istream}”和“ const char [20]”)|

| 19 |错误:根据类型'bool'|的右值对类型'bool&'的非常量引用进行了无效的初始化|

| 19 |错误:从'const char *'到'short int'的无效转换[-fpermissive] |

| 19 |错误:无法将右值'(short int)((int)(&(students +((sizetype)((((unsigned int)i)* 24u)))-> Student :: name))'绑定到'短int&'|

| 19 |错误:从'const char *'到'short unsigned int'的无效转换[-fpermissive] |

| 19 |错误:无法将右值'(short unsigned int)((int)(&(students +((sizetype)((((unsigned int)i)* 24u)))-> Student :: name))绑定到'short 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;
}
一些节目主持人

您会收到编译错误,因为运算符>>不适用于doc中所见的常量因此,由于将变量设置为常量并使用operator >>的组合而发生错误。卸下其中一个即可解决问题

这是一个示例代码,您可以尝试自己看看。

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]')指示此特定变量类型(例如)存在no operator >>重载const char[]

我希望这能回答您的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

WCF 服务有一个参数化的构造函数,它接受一个结构

接受一个函数和一个列表并返回布尔值的函数

JavaScript:创建一个函数defineFirstArg,它接受一个函数和一个参数;接受更多参数

Rust:一个结构体和一个同名的函数

如何在Rust中编写一个通用函数,该函数可以接受实现特定属性的任何结构?

创建一个接受字符串的函数并创建一个接受布尔值和字符串的函数

打字稿:给定一个函数表,创建一个函数,该函数接受表的键和表中函数的第二个参数

如何制作一个接受 numVertices 和 numEdges 的函数然后总是生成一个连接图?

编写一个可以接受值和任何类型的可迭代类型的函数

如何定义一个同时接受 Seq[T] 和 ParSeq[T] 作为参数的函数?

传递一个接受任意数量和类型参数的函数作为类模板参数

一个接受数组A和索引i并重新排列它的函数

我怎样才能创建一个同时接受 Num 和 Maybe Num 的函数?

AS3:创建一个将Array和Vector都接受为参数的函数

是否可以编写一个接受右值和左值的模板函数

如何在 Python 中创建一个接受数字和整数列表的函数?

python(2.7)函数接受多个整数和一个列表,然后返回一个整数和一个列表

C ++:运算符重载-cout和cin-ostream函数,无法引用-它是一个已删除的函数

在C ++中,为什么要在`const char array`上重载一个函数,并包装一个`const char *`的私有结构?

编写一个函数,该函数接受一个 int 数组,并将偶数和奇数的和作为数组返回。(在描述中阅读全文)

创建一个函数,该函数接受两个名为键和值的列表作为参数并返回一个数据帧

您是否可以创建一个接受另一个函数和一个参数的函数,并返回一个嵌套函数调用的惰性流?

编写一个函数,该函数接受对象数组以及具有属性和值的对象

模板构造函数一个参数const而不是const

c复制一个const结构数组

接受一个Int并返回一个函数的函数

创建一个接受另一个函数作为参数的函数

如何使一个函数接受另一个函数的值的参数?

Sinon 模拟一个接受回调参数的函数