Я пытаюсь ввести 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;