1. ホーム
  2. c++

[解決済み] オブジェクトがメンバ関数と互換性のない型修飾子を持っている。

2022-02-07 11:07:04

質問

#include<iostream>

using namespace std;

class PhoneNumber

{

    int areacode;
    int localnum;
public:

    PhoneNumber();
    PhoneNumber(const int, const int);
    void display() const;
    bool valid() const;
    void set(int, int);
    PhoneNumber& operator=(const PhoneNumber& no);
    PhoneNumber(const PhoneNumber&);
};

istream& operator>>(istream& is, const PhoneNumber& no);


istream& operator>>(istream& is, const PhoneNumber& no)
{

    int area, local;
    cout << "Area Code     : ";
    is >> area;
    cout << "Local number  : ";
    is >> local;
    no.set(area, local);
    return is;
}

no.set(エリア、ローカル)で。 というメッセージが表示されます。

どうすればいいのでしょうか?

解決方法は?

パスしている no として const しかし、あなたはそれを修正しようとします。

istream& operator>>(istream& is, const PhoneNumber& no)
//-------------------------------^
{

    int area, local;
    cout << "Area Code     : ";
    is >> area;
    cout << "Local number  : ";
    is >> local;
    no.set(area, local); // <------
    return is;
}