Конструктор ввода с 1,2,3 или 4 переменными - PullRequest
0 голосов
/ 08 февраля 2020

Я пытаюсь ввести StoreItem только с двумя заполненными конструкторами вместо всех четырех в конструкторе.

Элемент будет введен в этом формате с кавычками и запятыми. Например, ввод будет ,

Ввод: "00073422318548", "Xbox"

вместо Ввод: "00073422318548", "Xbox", "Call of Duty", 50.79

Проблема, которую я запускаю в том, что когда я ввожу два, он просто ждет двух других ввода. Что я могу сделать для этого, чтобы ввести 1, 2, 3 или 4 аргумента в конструкторе. Я не могу изменить hpp, чтобы добавить больше конструкторов перегрузки.

hpp

StoreItem()=default;
StoreItem(const std::string & productName,
            const std::string & brandName = {},
            const std::string & upcCode = {},
            double              price = 0.0);

cpp

std::istream & operator>>(std::istream & stream, StoreItem & StoreItem) 
{
        stream >> std::quoted(StoreItem._upcCode)

    if (stream.peek() == ',') //Check for Commas
    {stream.ignore(1, ',');} //Ignore Comma
     stream   >> std::quoted(StoreItem._brandName,',')

    if (stream.peek() == ',') //Check for Commas
    {stream.ignore(1, ',');} //Ignore Comma
    stream   >> std::quoted(StoreItem._productName)

    if (stream.peek() == ',') //Check for Commas
    {stream.ignore(1, ',');} //Ignore Comma
    stream    >> StoreItem._price;

  return stream;
}

Main

    StoreItem* Item= new StoreItem;
    std::cout << "Enter item: \n";
    std::cin >> *Item;
...