Вопрос А почему в коде, подчеркивается с ошибкой cout<<data1? C++

Регистрация
16 Июн 2013
Сообщения
62
Репутация
-3
Спасибо
0
Монет
0
Какая ошибка в этом месте... #include
#include

using namespace std;

int main()

{
struct Sales_data {

std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};

Sales_data data1, data2;
if (std::cin >> data1.bookNo)
{

Sales_data data2;
while (std::cin >> data2.bookNo) {

if (data1.bookNo == data2.bookNo)
data1.bookNo += data1.bookNo + data2.bookNo;
else {

std::cout << data1 << endl;
data1 = data2;
}
}
std::cout << data1 << endl;
}

else {

//нет ввода! Предупредить пользователя
std::cerr << "No data?!" << std::endl;
return -1;
}
return 0;
system("pause");

}
 
Злой компилятор засекретил сообщение об ошибке? Если хочешь выводит структуру Sales_data в поток оператором << , надо этот оператор перегрузить для данного случая.
 
Структура не может быть выведена сразу как параметр через cout, если cout не доопределен для вывода таких структур, только по частям.
 
А компилятор что говорит?))) Если не мешает билдить - забейте, если все работает как надо)))
 
Какая ошибка в этом месте... #include
#include

using namespace std;

int main()

{
struct Sales_data {

std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};

Sales_data data1, data2;
if (std::cin >> data1.bookNo)
{

Sales_data data2;
while (std::cin >> data2.bookNo) {

if (data1.bookNo == data2.bookNo)
data1.bookNo += data1.bookNo + data2.bookNo;
else {

std::cout << data1 << endl;
data1 = data2;
}
}
std::cout << data1 << endl;
}

else {

//нет ввода! Предупредить пользователя
std::cerr << "No data?!" << std::endl;
return -1;
}
return 0;
system("pause");

}
Это не будет работать потому что тип данных который используется в structure нельзя будет отобразить через cout. Так как сама задача неизвестна решение составить так же нельзя.
 
Назад
Сверху