Кто может помочь что это за ошибка в void operato? Не существует подходящего конструктора для преобразования из "int" в "std::basic_string

#include <iostream>
#include <iomanip>
#include<string.h>
#include <string>
using namespace std;

class Phone_number {

public:
    string code = "";
    string number = "";
    string type_number;
    //Конструктор для копирования
    Phone_number(const Phone_number& v) :
        code(v.code),
        number(v.number),
        type_number(v.type_number) {}
    //Конструктор для сравнения
    const Phone_number& operator=(const Phone_number& v)
    {
        code = v.code;
        number = v.number;
        type_number = v.type_number;
        return v;
    }


    //Простой конструктор
    Phone_number(string type) {type_number=type; }
    Phone_number(string numb) { number = numb; }
     
    void Fun() {


        while (number.length() < 12 || number.length() > 12) {
            cout << "Nevirno nabraniy nomer ";
            cin >> number;
        }
        for (int i = 0; number.length() > i; i++) {
            if (i == 0) {
                cout << "(";

            }
            else {
                if (i == 3) {

                    cout << ")";
                }
            }
            cout << number[i];
            if (i == 4 || i == 6 || i == 8) {

                cout << "-";

            }
        }
       
    }

    void operato() {
         string num = type_number[2] + type_number[3] + type_number[4];
        if ((num == "050") || (num == "099") || (num == "095") || (num == "066") || (num == "089")) {

            cout << "MTS";
        }



        else
            cout << "Ne mobilnuy nomer.";
    }
};



int main() {

    cout << "Enter Telephone number" << endl;
    string some = " ";
    getline(cin, some);
    string some1 ;
    Phone_number Phone1(some);
    Phone_number Phone2(some1);
    Phone1.Fun();
    Phone1.operato();
    return 0;



}

Ответы (1 шт):

Автор решения: Harry

Компилятор встречает

type_number[2] + type_number[3] + type_number[4]

О! да это char, думает он. О! суммируем! Значит, надо просуммировать коды этих char'ов и получить какое-то число. Отлично, просуммировали.

Теперь что? Надо присвоить его строке? А как?

string num = 250; 

Как это сделать? Нет ни одного преобразования int в string.

Значит, так и напишем пользователю, пусть разбирается...

Напишите

string num = ""s + type_number[2] + type_number[3] + type_number[4];

P.S. А что это у вас за чудо?

Phone_number(string type) {type_number=type; }
Phone_number(string numb) { number = numb; }

Два конструктора с одинаковой сигнатурой - и как компилятору выбрать подходящий...

→ Ссылка