E0289 отсутствуют экземпляры конструктора “Book::Book”

206
21 ноября 2020, 08:20

Можете помочь?Я написал этот код в vs 2015 и все нормально работало. Как только скопировал код в мы 2017 дает ошибку "E0289 отсутствуют экземпляры конструктора "Book::Book", соответствующие списку аргументов","MVBook::MVBook", соответствующие списку аргументов" , E1790 на конструктор по умолчанию для "Library" нельзя ссылаться, так как эта функция удалена Вот мой код

// ConsoleApplication3.cpp : Defines the entry point for the console application. 
// 
 
#define _CRT_SECURE_NO_WARNINGS 
 
//#include "stdafx.h" 
#include <iostream> 
 
using namespace std; 
 
class Book 
{ 
 
protected: 
	char *title; 
public: 
	Book(char *t); 
 
	Book &operator =(Book &t) 
	{ 
 
	} 
	~Book() 
	{ 
		delete[] title; 
	} 
}; 
 
class MVBook : public Book 
{ 
	friend ostream &operator<<(ostream &t, MVBook &x); 
	friend Library; 
	int counter; 
public: 
	MVBook(char *t, int i) : Book(t) 
	{ 
		counter = i; 
	} 
 
	void print(ostream &t) 
	{ 
		t << title << endl; 
		t << counter << endl; 
	} 
 
	~MVBook() 
	{ 
		delete[] title; 
	} 
 
}; 
 
ostream &operator<<(ostream &t, MVBook &x) 
{ 
	x.print(t); 
	return t; 
} 
 
class Library 
{ 
	Book books[10]; 
	int i = 0; 
public: 
	void add(Book &t) 
	{ 
		books[i] = t; 
		i++; 
	} 
}; 
 
 
Book::Book(char *t) 
{ 
	title = new char[strlen(t + 1)]; 
	strcpy(title, t); 
} 
 
int main() 
{ 
 
	Book A("Alice in the wonderland"); 
	Book B("Basic of C++"); 
	MVBook D("Dictionary", 5); 
	Library C; 
	C.add(A); 
	C.add(B); 
	cout << D; 
	return 0; 
}

Answer 1

В классе Book у вас есть только конструктор от строки. А по стандарту конструктор по умолчанию не создаётся если у вас уже есть другой конструктор.

В классе Library books записаны в массив. А для массива обязательно чтобы элемент имел конструктор по умолчанию.

Да напишите вы в Book этот конструктор , и ✝ с ним.

  char *title { nullptr } ;
public:
  Book ( ) { }
READ ALSO
C++ atomic: ошибка LLVM из NDK

C++ atomic: ошибка LLVM из NDK

При включении любых C++ заголовков появляется ошибка в заголовках LLVM:

124
Отличить текст от ссылки

Отличить текст от ссылки

Есть форма ввода YouTubeВ неё можно ввести поисковой запрос или вставить ссылку на видео YouTube

129
Блокировка Коллекции

Блокировка Коллекции

Мне нужно сделать блокировку чтения и записи, при этом, во время чтения происходит удаление элементов из коллекции List

95