Как записать в объект массив строк С++

Рейтинг: 0Ответов: 1Опубликовано: 05.05.2023

Конструктор класса User:

    User(string fio[2], double telefoneNumber, int accountBalance) 
        {
            this->fio[0] = fio[0];
            this->fio[1] = fio[1];
            this->fio[2] = fio[2];
    
            this->telefoneNumber = telefoneNumber;
            
            this->accountBalance = accountBalance;
        }

Вызов это конструктора:

int main()
{
    User firstuser({ "Cucumber", "Andrey", "Ananasovich" }, 88005553535, 500);
}

Строка { "Cucumber", "Andrey", "Ananasovich" } вызывает ошибку. Как правильно будет записать свойства в объект firstuser введите сюда описание изображения

Ответы

▲ 1Принят

Ну, можно, например, вот так

struct User
{
    string fio[2];

    User(initializer_list<string> fio)
    {
        auto it = fio.begin();
        this->fio[0] = *it++;
        this->fio[1] = *it;
    }

    void out()
    {
        cout << fio[0] << "  " << fio[1] << endl;
    }
};

int main(int argc, char * argv[])
{
    User u({"aaa","bbb"});
    u.out();
}

Но это по сути означает оказаться персонажем того анекдота — "о, месье понимает толк в извращениях!"...

Это С++, и решать проблемы надо в его рамках. Не обязательно через array, можно и вот так — но тогда лучше использовать вектор строк, что-то вроде

    vector<string> fio;

    User(initializer_list<string> fio):fio(fio)
    {