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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2012, 20:25   #1
Ghostik
Новичок
Джуниор
 
Регистрация: 09.04.2012
Сообщений: 2
По умолчанию нет перегруженной функции, принимающей 2 аргументов

Код:
#ifndef classh
#define classh
class film	//инициализация класса
{
	// объявляются данные-члены и функции-члены и указывается уровень доступа к ним
	int num, sbr;
	char *name, *rezh;
public:
	film(char *,char *,int,int);
	film();
	~film();
	void nomer(int);
	void naimenovanie(void);
	void sbory(void);
	void rezhisser(void);
	void print(void);
	void zapol(int);
};
#endif
Код:
#include "stdafx.h"
film::film(char *name1,char *rezh1,int num1=2,int sbr1=120)
{
	printf("Создание объекта под номером %d\n", num1);
	name=name1;
	rezh=rezh1;
	num=num1;
	sbr=sbr1;
}
film::film()
{
	printf("Введите номер записи ");
	scanf("%d", &num);
	naimenovanie();
	sbory();
	rezhisser();
}
film::~film()
{
	printf("Вы удалили объект со следующими параметрами:\n");
	printf("____________________________________________\n");
	print();
}
void film::naimenovanie(void) // Наименование фильма
{
	int b;
	char B[40];
	printf ("Введите название фильма \n");
	scanf ("%s", B);
	b=strlen(B); //возврат длины нуль-терминированной строки
	name=(char*)malloc(b*sizeof(char)); //динамическое выделение памяти
	strcpy(name,B); //копирование содержимого нуль-терминированной строки
}
void film::sbory(void) // Сборы фильма
{
	printf("Введите сборы проката \n");
	scanf("%d", &sbr);
}
void film::rezhisser(void) // Режиссер
{
	int c;
	char C[40];
	printf("Введите режиссера \n");
	scanf("%s", C);
	c=strlen(C); //возврат длины нуль-терминированной строки
	rezh=(char*)malloc(c*sizeof(char)); //динамическое выделение памяти
	strcpy(rezh,C); //копирование содержимого нуль-терминированной строки
}
void film::zapol(int i) //заполнение полей
{
//	nomer(i);
	naimenovanie();
	sbory();
	rezhisser();
}
void film::print() //вывод на экран заполненных полей
{
	printf("\t Номер записи: %d \n\t Наименование: %s\n",num,name);
	printf("\t Сборы в прокате: %d млн $. \n\t Режиссер: %s\n",sbr,rezh);
}
Код:
#include "stdafx.h"
void main(void) // главная программа              
{
	system("chcp 1251");
	film *a, *b, *c;
	a=new film("Неудержимые","Сталлоне",1,234);
	b=new film("Аватар","Кэмерон");
	c=new film();
	printf("#############################\n");
	printf("#Содержимое объектов класса:#\n");
	printf("#############################\n");
	a->print();
	b->print();
	c->print();
	delete a;
	delete b;
	delete c;
	printf("Работа программы окончена...");
	getchar();
	getchar();
}
Компилятор указывает на ошибку в строке b=new film("Аватар","Кэмерон");
error C2661: film::film: нет перегруженной функции, принимающей 2 аргументов
Подскажите, пожалуйста, что не так? В программировании новичок...
Ghostik вне форума Ответить с цитированием
Старый 09.04.2012, 20:30   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Вы указали параметры по умолчанию в реализации
film::film(char *name1,char *rezh1,int num1=2,int sbr1=120)
А надо бы в прототипе
film(char *,char *,int = 2,int = 120);
EUGY вне форума Ответить с цитированием
Старый 10.04.2012, 15:06   #3
Ghostik
Новичок
Джуниор
 
Регистрация: 09.04.2012
Сообщений: 2
По умолчанию

Я решил проблему. Достаточно было указать значения по умолчанию в параметрах конструктора в описании класса:
Код:
public:
	film(char *name1,char *rezh1,int num1=2,int sbr1=234);
	film();
	~film();
Код:
film::film(char *name1,char *rezh1,int num1,int sbr1)
{
	printf("Создание объекта под номером %d\n", num1);
	name=name1;
	rezh=rezh1;
	num=num1;
	sbr=sbr1;
}
Ghostik вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача аргументов в функции по ссылке skanku Общие вопросы C/C++ 2 11.01.2012 21:24
значения аргументов функции по умолчанию TomaZ Общие вопросы C/C++ 2 20.09.2011 18:09
Возврат 2 и более аргументов из функции. Drilla Microsoft Office Excel 2 18.09.2011 14:11
Функции с произвольным количеством и типом аргументов. Crudelis Общие вопросы C/C++ 1 16.06.2010 00:10
С++sqrt: неоднозначный вызов перегруженной функции Crazy_caramel Помощь студентам 10 13.11.2009 19:13