Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: С++ - оператор enum в конструкторе  (Прочитано 10870 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Vadim Mc
Помогающий

ru
Offline Offline
Пол: Мужской

« : 24-08-2005 19:15 » 

Коллеги, всем привет!
Есть маленький вопрос по части оператора enum в конструкторе
Для начала есть такая маленькая рабочая программка, которая  компилируется и работает

1. #include <iostream>
2.using namespace std;
3.int main() {
4.    enum Days {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
5.    unsigned short int today;
6.    cout<<"Enter a day: \n";
7.    cin>>today;
8.    if (today==Sunday || today == Saturday)
9.        cout<<"Gotta' love the weekends!\n";
10.    cout<<"Back to work.\n";
11.    return 0;}

Далее, сталкиваюсь с базовым и производным классом – не буду грузить полным текстом пограммы вкратце такая ситуация объявляются два класса – базовый и производный с перегружаемыми конструкторами вот их обяьвление
1.Заголовок
#include <iostream>
2.using namespace std;
3.enum BREED {GOLDEN, CARIN, DADNDIE, SHETLAND, DOBERMAN, LAB}; - обьявление  enum

2.Объявление конструктора производного класса

Dog::Dog (int age, int weight, BREED breed):
    Mammal(age), itsBreed (breed){
        itsWeight = weight;
        cout<<"Dog (int, int, BREED)\n";}

Далее, пытаемся инициализировать конструктор вводом данных с клавиатуры – вот листинг ввода все написано в теле main() 
85.    int age, weight;
86.    unsigned short int breed;
87.    cout<<"Please, enter breed :";
88.    cin>>breed;
89.    cout<<"\nPlease, enter age :";
90.    cin>>age;
91.    cout<<"\nPlease, enter weight :";
92.    cin>>weight;
93.    Dog tuzik (age, weight,breed);
94.    cout<<"Tuzik is dog "<<tuzik.GetBreed()<<", his age "<<tuzik.GetAge()<<", and "<<tuzik.GetWeight()<<" pound weight";
95.    return 0;}

Компилятор ругается -
# CC -o 124 124.cc
"124.cc", line 93: Error: Could not find a match for Dog::Dog(int, int, unsigned short) needed in main().1 Error(s) detected.
В чем дело – так как простую программу компилил без вопросов с использованием переменной unsigned short int today;
Новичек заранее благодарен гуру Улыбаюсь
« Последнее редактирование: 18-12-2007 22:00 от Алексей1153++ » Записан

"Теория теорией, но сточки зрения инженера-практика никакая, даже самая элегантная методология, предлагаемая учеными, не стоит и ломаного гроша, если она не помогает в построении реальных, работающих систем." @ Гради Буч
Alf
Гость
« Ответ #1 : 24-08-2005 19:50 » 

Я бы рекомендовал явно привести тип переменной breed к типу BREED. А именно, строку

Код:
Dog tuzik (age, weight, breed);

заменил бы на

Код:
Dog tuzik (age, weight, static_cast<BREED>(breed));
Записан
Vadim Mc
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 24-08-2005 20:59 » 

Альф, спасибо большое! Тольок что проверил, все компильнулось отлично работает - просто я учу по книжке джесса либерти С++ за 21 день, пока прхожу день 12 НАследование и до массивов и связанных списков еще не дошел - век живи век учись
Записан

"Теория теорией, но сточки зрения инженера-практика никакая, даже самая элегантная методология, предлагаемая учеными, не стоит и ломаного гроша, если она не помогает в построении реальных, работающих систем." @ Гради Буч
Alf
Гость
« Ответ #3 : 25-08-2005 06:19 » 

Что поделаешь, издержки краткости... Такие языки, как C++, за 21 день не учат, это надувательство  Ага

Особенно если он - первый.
Записан
Vadim Mc
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 25-08-2005 13:06 » new

Естественно - но мне эта книжка понравилась последовательностью изложения от простого к сложному , которая тут же закрепляется практическими упраженениями. Кстати есть еще вопросик по этому поводу, задам из дома, там уже касается вызова конструкторов вчера обратил внимание на некторое различие вызова конструктора производного класса Улыбаюсь 
Записан

"Теория теорией, но сточки зрения инженера-практика никакая, даже самая элегантная методология, предлагаемая учеными, не стоит и ломаного гроша, если она не помогает в построении реальных, работающих систем." @ Гради Буч
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines