Компилятор ругается на ошибку
Error 5 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'Kniga'
Исходная задача: Создать 2 класса: класс Книга и класс СписокКниг.
Вот код, возможно что-то в другом месте написал не правильно и потому не компилируется код.
#include "stdafx.h"
#include "iostream"
using namespace std;
class Kniga{
private: char *autor;
char *nazva;
public: Kniga(char *, char *);
Kniga();
Kniga(const Kniga &);
void vypishy();
~Kniga();
};
Kniga::Kniga(char *konstr_autor, char *konstr_nazva){
autor = new char[strlen(konstr_autor) + 1];
strcpy(autor, konstr_autor);
nazva = new char[strlen(konstr_nazva) + 1];
strcpy(nazva, konstr_nazva);
}
Kniga::~Kniga(){
delete[] autor;
delete[] nazva;
}
Kniga::Kniga(){
autor = NULL;
nazva = NULL;
}
Kniga::Kniga(const Kniga &kniga){
autor = new char[strlen(autor) + 1];
strcpy(autor, kniga.autor);
nazva = new char[strlen(nazva) + 1];
strcpy(nazva, kniga.nazva);
}
void Kniga::vypishy(){
if (autor != NULL && nazva != NULL)
{
cout << "Autor: " << autor << endl;
cout << "Nazva: " << nazva << endl;
}
}
class SpisokKnig{
int maxKnig;
Kniga *knigi;
static int skolkoKnig;
public:
SpisokKnig(int);
void dobavitKnigu(char *aut, char *naz);
void vypishyVse();
};
int SpisokKnig::skolkoKnig = 0;
SpisokKnig::SpisokKnig(int maxKn){
maxKnig = maxKn;
knigi = new Kniga[maxKnig];
}
void SpisokKnig::dobavitKnigu(char *aut, char *naz){
knigi[skolkoKnig] = Kniga(aut, naz);
skolkoKnig++;
}
void SpisokKnig::vypishyVse(){
for (int i = 0; i < skolkoKnig; i++)
cout << knigi[i] << endl; //ругается здесь
}
int _tmain(int argc, _TCHAR* argv[])
{
Kniga kniga("Jack Back", "My Book");
SpisokKnig spisok(3);
spisok.dobavitKnigu("Nick Tirik", "New book");
spisok.dobavitKnigu("Vova Mill", "Vova's life");
spisok.vypishyVse();
system("pause");
return 0;
}
Ну допишите этот оператор, типа
class Kniga{
private: char *autor;
char *nazva;
public: Kniga(char *, char *);
Kniga();
Kniga(const Kniga &);
void vypishy();
~Kniga();
friend ostream& operator << (ostream& os, const Kniga& k);
};
ostream& operator << (ostream& os, const Kniga& k)
{
return os << "(" << k.author<< " : " << k.nazva << ")";
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
ПриветствуюЕсть некая функция, которая получает хеш-сумму файла (exe) и записывает ее в файл
Есть БД usersВ одной из таблиц есть поля login, password, id
ЗдравствуйтеПредположим, есть таблица со столбцами user_id и user_group, остальные столбцы не важны