【问题标题】:C++ Using cin in member functions of a classC++ 在类的成员函数中使用 cin
【发布时间】:2018-03-19 18:49:09
【问题描述】:

我正在尝试使用 cin 在类的成员函数中读取类的私有成员,我收到错误 [Error] no match for 'operator>>' in 'std::cin >> (( const Course*)this)->Course::courseID' ? 有可能这样做吗?这是我的代码

//Course.h
#ifndef Course_H
#define Course_H
#include<string>
#include<iostream>
using namespace std;
class Course
{
    private:
        string courseID;
        string courseName;
        int credits;
        Course * nextCourse;
    public:
        void EnterCourse() const;
        void SetNext(Course *);
        string GetCourseID() const;
        string GetCourseName() const;
        int GetCredits() const;
};

void Course::EnterCourse() const
{
    cout<<"=======Enter Course Information========\n"
        <<"Enter Course ID: \n";
    cin>>courseID;
    cout<<"Enter Course Name: \n";
    cin>>courseName;
    cout<<"Enter credits: \n";
    cin>>credits;
}



string Course::GetCourseID() const
{
    return courseID;
}

string Course::GetCourseName() const
{
    return courseName;
}

int Course::GetCredits() const
{
    return credits;
}

void Course::SetNext(Course * cou)
{
    nextCourse=cou;
}



#endif

【问题讨论】:

  • 这与cin 没有直接关系,但您正在尝试更改const 函数中的成员变量。这对任何人来说都是不可能的,但 cin 在这里受到了指责。
  • 不能在声明const的成员函数中修改类的成员。这包括阅读来自cin 的成员。
  • using namespace std; 在头文件中是我书中正式谴责的理由

标签: c++


【解决方案1】:

使用std::cin 被视为写入成员数据。但是您不能使用const 限定成员函数更改数据成员。如果要实现该功能,请从函数声明和定义中删除 const 说明符:

void Course::EnterCourse();

这些 SO 帖子中有关该主题的更多信息:
Meaning of “const” last in a C++ method declaration?
What is meant with “const” at end of function declaration?

【讨论】:

  • 非常感谢知道了
猜你喜欢
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
  • 2011-04-02
  • 2014-10-03
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
相关资源
最近更新 更多