Форум программистов, компьютерный форум CyberForum.ru

Функция с умалчиваемыми параметрами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Fiks19
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 44
05.01.2013, 11:43     Функция с умалчиваемыми параметрами #1
Написана программа подскажите почему у меня вылетает вот такая ошибка
"extra parameter in call to init()"(типо дополнительные параметры вылазят)
в чем причина и что делаю не так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#include <math.h>
#include <iomanip>
#include <string.h>
 
using namespace std;
 
struct person{
   char* fam;
   int course;
   int rating;
};
person listing;
void init ()
 {
 
     listing.fam="a",listing.course=3,listing.rating=20;
     cout << " Family: " << listing.fam <<" Course: " << listing.course << " Rating: "<< listing.rating;
  }
 
 
int main(){
 
  init();
  init("asd",2,3);
 
 
 
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2013, 11:43     Функция с умалчиваемыми параметрами
Посмотрите здесь:

Конструктор с параметрами C++
C++ конструктор с параметрами
C++ Программа с параметрами
Функция с параметрами типа указатель на символ и ссылка на целое C++
C++ Функции с числовыми параметрами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
05.01.2013, 11:46     Функция с умалчиваемыми параметрами #2
Функция init не принимает параметров, а Вы передаете ей их в количестве аж трех штук. Это вроде очевидно.
Fiks19
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 44
05.01.2013, 11:59  [ТС]     Функция с умалчиваемыми параметрами #3
теперь понятно
тогда вот, как организовать функцию с умалчиваемыми параметрами
C++
1
2
3
4
5
6
7
8
9
10
11
void init(char* fam="alex",int course=2){
cout << fam<< course;
}
 
int main(){
 
  init();
  init("anton",3) ;
  init("vlad"); 
getch();
}
но с использованием структуры
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
05.01.2013, 12:05     Функция с умалчиваемыми параметрами #4
Во-первых, давайте сразу избавимся от глобальной переменной.
Во-вторых, возможны вариации. Можно написать функцию, которая создает новый объект, заполняет поля, и возвращает его. Или же функция может принимать в качестве первого параметра указатель на существующий объект и заполнять его поля значениями остальных аргументов. Если мы будем использовать второй вариант, то прототип будет выглядеть как
C++
1
void init(person* p, char* name = "alex", int course = 1, int rating = 100);
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
05.01.2013, 12:29     Функция с умалчиваемыми параметрами #5
Цитата Сообщение от Fiks19 Посмотреть сообщение
C++
1
void init();
В С++ это аналог в Си
C
1
void init(void);
Теперь, я думаю, ошибка станет понятной.
Fiks19
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 44
05.01.2013, 13:09  [ТС]     Функция с умалчиваемыми параметрами #6
Цитата Сообщение от 0x10 Посмотреть сообщение
Во-первых, давайте сразу избавимся от глобальной переменной.
Во-вторых, возможны вариации. Можно написать функцию, которая создает новый объект, заполняет поля, и возвращает его. Или же функция может принимать в качестве первого параметра указатель на существующий объект и заполнять его поля значениями остальных аргументов. Если мы будем использовать второй вариант, то прототип будет выглядеть как
C++
1
void init(person* p, char* name = "alex", int course = 1, int rating = 100);
т.е получатся теперь переменная внутри и присвоение так же организовывать.
Дальнейшая организация программы изменится?
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
05.01.2013, 13:15     Функция с умалчиваемыми параметрами #7
Какие-то изменения, понятно, будут. Как минимум, в вызывающем коде добавится параметр. Напишите сначала в каком-нибудь виде, доведите до рабочего состояния. Если останутся непонятки - welcome.
Fiks19
1 / 1 / 0
Регистрация: 07.01.2012
Сообщений: 44
05.01.2013, 14:04  [ТС]     Функция с умалчиваемыми параметрами #8
Спасибо все получилось.
А если с первым вариантом (созданием функции, которая создает новый объект, заполняет поля)как будет выглядеть фукция
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2013, 14:12     Функция с умалчиваемыми параметрами
Еще ссылки по теме:

Функция с 4-мя параметрами (деление, остаток от деления,.) C++
Конструктор с параметрами C++
Функции с параметрами C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
05.01.2013, 14:12     Функция с умалчиваемыми параметрами #9
Прототип будет таким:
C++
1
person init(char* name = "alex", int course = 1, int rating = 100);
И на будущее: в С++ для таких целей используются конструкторы. Скорее всего, в Вашем задании этого не нужно. но почитать в дальнейшем не помешает.
Yandex
Объявления
05.01.2013, 14:12     Функция с умалчиваемыми параметрами
Ответ Создать тему
Опции темы

Текущее время: 17:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru