Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2018, 20:03   #1
Lucky_Vadim
Пользователь
 
Регистрация: 12.12.2017
Сообщений: 22
По умолчанию Пишет "error C2512: Animal: нет подходящего конструктора по умолчанию"

main.cpp

Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <cstring>
#include "Animal.h"
#include "Dog.h"
using namespace std;
//////////////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
	setlocale(LC_ALL,"Russian");
	int select;

	cout << "Добро пожаловать!\n\n";

	do{

		cout << "Выберите польователя:" << endl;
		cout << "1. Регистратор\n";
		cout << "2. Покупатель\n";
		cout << "3. Выход из программы\n";


		do{
			cin >> select;
			if(select < 1 || select > 3) cout << "Введите корректного пользователя";
		} while(select < 1 || select > 3);

		switch(select)
		{
		case 1: manager();
			break;

		case 2: user();
			break;

		default:
			cout << "\nДо свидания!";
			getch();
		}

	} while(select!=3);

	return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
void manager()
{
	char arr[40];
	for(int x = 0;x<=3;++x)
	{
		cout << "Введите пароль: ";
		cin >> arr;
		if(strcmp(arr,"password"))
		{
			cout << "\nНеверный пароль, попытайтесь ещё раз\n";
			if(x == 3)
			{
				cout << "Вы исчерпали все попытки.\n";
				return;
			}
		}
		else
		{
			cout << "Доступ получен\n";
			break;
		}
	}
	int choice;
	do{
		cout << "\nВыберите операцию: \n\n";
		cout << "1. Добавить животное в ведомость\n";
		cout << "2. Просмотр ведомости\n";
		cout << "3. Удаление животного из ведомости\n";
		cout << "4. Полная очистка ведомости (Для администратора!)\n";
		cout << "5. Вернуться в главное меню\n";

		do{
			cin >> choice;
			if(choice < 1 || choice > 5) cout << "Некорректный выбор\n";
		} while(choice < 1 || choice > 5);

		switch(choice)
		{
		case 1:
			add();
			break;
		case 2:
			display();
			break;
		case 3:
			del();
			break;
		case 4:
			fdel();
			break;
		}

	}while(choice!=5);
	return;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
void user()
{
	int x;

	cout << "Добро пожаловать в \"Мир питомцев\"!\n";
	do{
		cout << "Выберите действие: \n";

		cout << "1.Посмотреть ассортимент\n";
		cout << "2.Позвать менеджера\n";
		cout << "3.Выход в главное меню (ТОЛЬКО для менеджера)\n";
		do{
			cin >> x;
		} while(x<1 || x>3);

		x == 1 ? display() : ring();
	} while(x!=3);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
void add()
{
	int i;

	for(i=0;i<SIZE;++i)
	{
		if(!*object[i].animal) break;
	}

	if(i==SIZE)
	{
		cout << "Список полон.\n";
		return;
	}
	object[i].choice_of_the_animal();
	return;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
void Animal :: choice_of_the_animal()
{
	char choice_of_the_animal[100];
	cout << "Введите вид животного: ";
	cin >> animal; cout << endl;

	if(strcmp(choice_of_the_animal,"собака"))
	{
		Dog objdog();
		// конструктор Dog
	}

	if(strcmp(choice_of_the_animal,"кошка"))
	{
		// конструктор Cat
	}

	if(strcmp(choice_of_the_animal,"курица"))
	{
		// конструктор Chicken
	}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
Animal.h

Код:
#include "stdafx.h"
#include <iostream>
using namespace std;

const int SIZE = 100;
class Animal {
protected:
	float Mass;
	char* Sex;
	char* Color;
	int Age;
public:
	char animal[100];
	Animal(float mass, char* sex, char* color, int age)
	{
		cout << "Введите массу животного: ";
		cin >> mass; cout << endl;
		cout << "Ввеите пол животного(M\\F): ";
		cin >> sex; cout << endl;
		cout << "Введите цвет животного: ";
		cin >> color; cout << endl;
		cout << "Введите возраст: ";
		cin >> age; cout << endl;
		return;
	  
	}
	void choice_of_the_animal();
	~Animal(){};

}
object[SIZE];
void manager(),add(),user(),init();
void display(),del(),fdel(),ring();
Dog.h

Код:
class Dog:public Animal
{
private:
	char* Name;
	char* Race;
	char* Type;
public:
	Dog(float mass, char* sex, char* color, int age, char* name,  char* race, char* type):
	  Animal(mass, sex, color, age)
	{
		cout << "Введите массу животного: ";
		cin >> mass; cout << endl;
		cout << "Введите пол животного(Девочка\Мальчик): ";
		cin >> sex; cout << endl;
		cout << "Введите цвет животного: ";
		cin >> color; cout << endl;
		cout << "Введите возраст: ";
		cin >> age; cout << endl;
		cout << "Введите имя животного: ";
		cin >> name; cout << endl;
		cout << "Введите породу животного: ";
		cin >> race; cout << endl;
		cout << "Введите вид животного: ";
		cin >> type; cout << endl;
		return;

	}
	~Dog()
	{
	}

};
Lucky_Vadim вне форума Ответить с цитированием
Старый 16.04.2018, 20:12   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ииииииии? Чего вы от нас ждете? Вы не верите своим глазам или не можете прочитать сообщение компилятора? У вас все конструкторы требуют параметры - либо задавайте их, либо пропишите без параметров.
p51x вне форума Ответить с цитированием
Старый 16.04.2018, 20:41   #3
Lucky_Vadim
Пользователь
 
Регистрация: 12.12.2017
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Lucky_Vadim Посмотреть сообщение
object[SIZE];
Ошибка здесь, почему?
Lucky_Vadim вне форума Ответить с цитированием
Старый 16.04.2018, 23:33   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Так вам же компилятор написал почему. И я писал:

Цитата:
Сообщение от p51x Посмотреть сообщение
У вас все конструкторы требуют параметры - либо задавайте их, либо пропишите без параметров.
p51x вне форума Ответить с цитированием
Старый 17.04.2018, 19:53   #5
Lucky_Vadim
Пользователь
 
Регистрация: 12.12.2017
Сообщений: 22
По умолчанию

Ну я всё равно не понимаю, что нужно написать чтобы оно откомпилировалось
Lucky_Vadim вне форума Ответить с цитированием
Старый 17.04.2018, 20:30   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Давайте по азам языка пройдемся. Вот тут
Код:
object[SIZE];
вы просите компилятор создать SIZE объектов класса Animal с помощью конструктора Animal(). Но у вас такого нет, а есть только
Код:
Animal(float mass, char* sex, char* color, int age)
. О чем вам и сообщили.

Цитата:
что нужно написать чтобы оно откомпилировалось
Ну если вы не понимаете, что хотите от программы, то мы то откуда узнать должны.
Как я уже писал у вас есть чуток вариантов:
1. Написать конструктор Animal(). Я вообще не понял зачем вы передаете в конструктор параметры и в нем же вводите эти же параметры от пользователя, причем поля объектов так и не заполняете.

2. Задать дефолтные значения для параметров

3. Вызвать ваш конструктор с параметрами. Тут чуть веселее:
а) использовать инициализацию с помощью {}, но прописывать 100 объектов...
б) взять вектор, который умеет вызывать конструктор
в) реализовать свой велосипед
и т.д.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пишет "Нет диска в дисководе" и "Неопознаный диск" при установке ХР - Windows XP lleonid Операционные системы общие вопросы 11 21.06.2017 19:41
lazarus, выдёт ошибку, Fatal: Syntax error, "BEGIN" expected but "end of file" found. Артём14 Lazarus, Free Pascal, CodeTyphon 3 12.11.2016 18:35
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Преобразование в строчный тип данных(Ошибка не содержит статического метода "Main", подходящего для точки входа) aly-lucenko Помощь студентам 8 02.10.2011 11:36
настроить при открытии Excel 2003 в окошке "Тип файлов" вывод пункта "Все файлы (*.*)" по умолчанию? Unior Microsoft Office Excel 2 01.03.2009 02:42