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

Функция, имя которой совпадает с именем класса - C++

Войти
Регистрация
Восстановить пароль
 
Pepsy
47 / 32 / 4
Регистрация: 05.01.2013
Сообщений: 307
02.07.2013, 08:42     Функция, имя которой совпадает с именем класса #1
Вот например
C++
1
2
3
4
5
6
7
8
9
10
...
class e
{
      int a;
      float b;
public:
      //И здесь функция, имя которой равняется имени классу, с помощью которой мы инициализируем переменные а и b.
      // Что-то типа e::(int a, float b){}
};
...
Но к сожалению я не помню ее формулировки((. Никто не мог бы подсказать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2013, 08:42     Функция, имя которой совпадает с именем класса
Посмотрите здесь:

C++ При перегрузке оператора для класса не получается использовать имя переменной такое же, как в описании класса
C++ Как описывать функции, заданные в шаблоне класса, тип возвращаемого значения которых совпадает с именем класса
C++ Обращение к мемберам класса под другим именем
C++ Как вы шаблонном классе определить контейнер, тип которого совпадает с именем параметра шаблона?
Разобрать структуру с именем ZNAK, содержащую поля: фамилия, имя, знак зодиака, дата рождения C++
C++ Запишите описание класса с именем TOVAR
C++ Описание класса с именем PERSON
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zer0mail
2289 / 1915 / 192
Регистрация: 03.07.2012
Сообщений: 6,848
Записей в блоге: 1
02.07.2013, 09:01     Функция, имя которой совпадает с именем класса #2
C++
1
e(int a1,float b1){a=a1;b=b1;}
Pepsy
47 / 32 / 4
Регистрация: 05.01.2013
Сообщений: 307
02.07.2013, 09:15  [ТС]     Функция, имя которой совпадает с именем класса #3
Идет ошибка при попытке создания элемента класса.
IntelliSense: для класса "Employer" не существует конструктор по умолчанию
-=ЮрА=-
Заблокирован
Автор FAQ
02.07.2013, 09:21     Функция, имя которой совпадает с именем класса #4
Цитата Сообщение от Pepsy Посмотреть сообщение
//И здесь функция, имя которой равняется имени классу, с помощью которой мы инициализируем переменные а и b.
* * * // Что-то типа e:int a, float b){}
- ОМГ это же конструктор преобразования для класса

Добавлено через 3 минуты
лови вобщем
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
#include <iostream>
using namespace std;
 
class Employer
{
    private:
        int a;
        float b;
    public :
        Employer();       //конструктор по умолчанию
        Employer(int _a, float _b);//коснтруктор преобразования
};
 
Employer::Employer()
{
    a = 0;
    b = 0;
}
 
Employer::Employer(int _a, float _b)
{
    a = _a;
    b = _b;
}
 
int main()
{
    Employer(5, 6.3);
    return 0;
}
http://codepad.org/jwjc6136 и почтиай про ООП
Output:
No errors or program output.
Гром
 Аватар для Гром
199 / 118 / 10
Регистрация: 20.03.2009
Сообщений: 1,076
Записей в блоге: 16
02.07.2013, 09:34     Функция, имя которой совпадает с именем класса #5
Примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Writer
{
public:
Writer(): name("Чукча"), age(34) {}   //Конструктор по умолчанию
Writer(const std::string& nm, int a): name(nm), age(a) {}   //Конструктор с параметрами
private:
std::string name;
int age;
};
 
void f()
{
Writer MegaWriter;   //Используется конструктор по умолчанию - Чукча-писатель
Writer HolmesFather("Sir Arthur Ignatius Conan Doyle", 71);   //Здесь и ниже - конструктор с параметрами
Writer MadamRo = Writer("J. K. Rowling", 47);
}
Pepsy
47 / 32 / 4
Регистрация: 05.01.2013
Сообщений: 307
02.07.2013, 10:00  [ТС]     Функция, имя которой совпадает с именем класса #6
C++
1
2
3
4
5
6
7
8
9
10
int a;
char line[100];
cout<<"Введите кол-во"<<endl;
cin>>a;
for(int i=0; i<a; i++)
{
    cout<<"Введите ФИО "<<i+1<<endl;
    gets(line);
    cout<<line;
}
Вопрос: на 1 итерации цикла cout и gets() пропускаются, а на 2, 3 и т.д. - нет. В чем проблема??
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
02.07.2013, 10:15     Функция, имя которой совпадает с именем класса #7
Pepsy, после ввода строки в буфере обмена остается клавиша enter - перенос каретки. На первой итерации он и записывается в line и выводится (cout не опускается, просто он выводит перенос строки). Этот enter остался после ввода строки "а". Я обычно делают так:
C++
1
2
3
cin >> a;
cin.ignore(); //игнорирует перевод каретки - удаляет её из буфера
// или можно gets(crap);, но перед этим char crap[10]; - 10 на всякий случай
-=ЮрА=-
Заблокирован
Автор FAQ
02.07.2013, 10:18     Функция, имя которой совпадает с именем класса #8
Pepsy, ввод коробит \n остающийся в буффере после того как нажимаем Enter
Думаю ты хотел сделать то что показываю ниже
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
using namespace std;
 
class Employer
{
    private:
        int  a;
        char fam[65];
    public :
        Employer();                  //ГЄГ®Г*ñòðóêòîð ГЇГ® óìîë÷Г*Г*ГЁГѕ
        Employer(int _a, char * _fam);//êîñГ*òðóêòîð ïðåîáðГ*çîâГ*Г*ГЁГї
    void Init(int _a, char * _fam);
    void Show();
};
 
Employer::Employer()
{
     a  = 0;
    *fam= 0;
}
 
Employer::Employer(int _a, char * _fam)
{
    Init(_a, _fam);
}
 
void Employer::Init(int _a, char * _fam)
{
    a = _a;
    strncpy(fam, _fam, 64);
}
 
void Employer::Show()
{
    cout<<"a  = "<<a<<endl;
    cout<<"fam= "<<fam<<endl;
}
 
int main()
{
    int i, a;
    char fam[65];
    Employer e[5];
    cout<<"\tINPUT  : "<<endl;
    for(i = 0; i < 5; i++)
    {
        cout<<"Employer #"<<i + 1<<" : "<<endl;
        cout<<"a  = ";cin>>a;cin.get();
        cout<<"fam= ";cin.getline(fam, 64);
        e[i].Init(a, fam);
    }
    cout<<"\tOUTPUT : "<<endl;
    for(i = 0; i < 5; i++)
    {
        cout<<"Employer #"<<i + 1<<" : "<<endl;
        e[i].Show();
    }
    cin.get();
    return 0;
}
Миниатюры
Функция, имя которой совпадает с именем класса  
Pepsy
47 / 32 / 4
Регистрация: 05.01.2013
Сообщений: 307
02.07.2013, 12:41  [ТС]     Функция, имя которой совпадает с именем класса #9
Кликните здесь для просмотра всего текста
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- ОМГ это же конструктор преобразования для класса

Добавлено через 3 минуты
лови вобщем
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
#include <iostream>
using namespace std;
 
class Employer
{
    private:
        int a;
        float b;
    public :
        Employer();       //конструктор по умолчанию
        Employer(int _a, float _b);//коснтруктор преобразования
};
 
Employer::Employer()
{
    a = 0;
    b = 0;
}
 
Employer::Employer(int _a, float _b)
{
    a = _a;
    b = _b;
}
 
int main()
{
    Employer(5, 6.3);
    return 0;
}
http://codepad.org/jwjc6136 и почтиай про ООП

А если я создаю массив элементов -
C++
1
Employer Man[150]
, то как вносить данные?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.07.2013, 12:57     Функция, имя которой совпадает с именем класса #10
Можно так:
C++
1
Employer Man[] = { Employer(1, 2), Employer(3, 4) };
или, если много элементов в массиве, то:

C++
1
2
3
4
5
for (int i=0; i<150; ++i)
   Man[i] = new Employer(1, 2);
// обращаться как Man[0]->, т.е. через стрелку вместо точки. Потом зачистить:
for (int i=0; i<150; ++i)
   delete Man[i];
Pepsy
47 / 32 / 4
Регистрация: 05.01.2013
Сообщений: 307
02.07.2013, 13:09  [ТС]     Функция, имя которой совпадает с именем класса #11
Значит, так?
C++
1
2
3
4
5
6
7
8
Employer Man[150];
for(int i=0 ; i<150; i++)
{
Man[i]=new Employer(a, b);
}
...
for (int i=0; i<150; ++i)
   delete Man[i];
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.07.2013, 13:26     Функция, имя которой совпадает с именем класса #12
Pepsy, не совсем. Man будет теперь массивом указателей, поэтому там нужна звездочка:
C++
1
Employer *Man[150];
И a, b тут: Man[i]=new Employer(a, b) - это ведь числа, которыми будут инициализированы переменные класса a и b, так? Если да, то верно.

Добавлено через 5 минут
Этот способ хорош тем, что объекты инициализируются сразу при "зарождении". Можно конечно без указателей, но тогда придется пользоваться дополнительными методами, которые будут присваивать значения внутренним переменным.
Pepsy
47 / 32 / 4
Регистрация: 05.01.2013
Сообщений: 307
02.07.2013, 13:28  [ТС]     Функция, имя которой совпадает с именем класса #13
и последний вопрос - объясните, пожалуйста, создание структуры
C++
1
tm_year
с использованием библиотеки
C++
1
time.h
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2013, 14:43     Функция, имя которой совпадает с именем класса
Еще ссылки по теме:

Как сделать, чтобы функция класса могла работать с обьектами другого класса C++
C++ Описание класса с именем TRAIN
Создать файл с именем указанным пользователем и записать в него его же имя C++
C++ Ошибка C2653: не является именем класса или пространства имен
C++ Описать структуру с именем ZNAK, содержащую следующие поля: фамилия, имя. знак Зодиака, дата рождения (массив

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
02.07.2013, 14:43     Функция, имя которой совпадает с именем класса #14
Цитата Сообщение от Pepsy Посмотреть сообщение
если я создаю массив элементов -
Employer Man[150]
ну а я что выше показал?
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Employer e[5];
Добавлено через 5 минут
Цитата Сообщение от Pepsy Посмотреть сообщение
tm_year
- это не структура а одно из полей структуры tm * инициализирвоать текущем временем данную структуру можно так
C++
1
2
3
time_t t;
time(&t);
tm * ptm = localtime(&t);
Yandex
Объявления
02.07.2013, 14:43     Функция, имя которой совпадает с именем класса
Ответ Создать тему
Опции темы

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