Важная информация
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: Ожидание первичного выражения.

  1. #1 Ожидание первичного выражения. 
    Новичок
    Регистрация
    29.11.2017
    Сообщений
    10
    Сказал(а) спасибо
    10
    Поблагодарили 1 раз в 1 сообщении
    main.h
    C++ Code:
    1. //запуск стандартных директив//
    2. #include <stdlib.h>
    3. #include <string.h>
    4. #include <iostream>
    5.  
    6. //подключение стандартной библиотеки//
    7. using namespace std;
    8.  
    9. //описание класса//
    10. class Tel
    11. {
    12. //открытый уровень доступа//
    13. public:
    14. Tel(int, const char *, float);
    15.    void Print(void);
    16.    void Input(void);
    17. //закрытый уровень доступа//
    18. private:
    19. int number_;
    20. char mark_ [20];
    21. float summ_;
    22. };
    23. //описание конструктора//
    24. Tel::Tel(int number_, const char *mark_, float summ_)
    25. {
    26.   Tel::number_=number_;
    27.   strcpy(Tel::mark_, mark_);
    28.   Tel::summ_=summ_;
    29. }
    30.  
    31. /*функции класса
    32. вывод*/
    33. void Tel::Print(void)
    34. {
    35.   cout<<number_<<" "<<mark_<<" "<<summ_<<" "<<endl;
    36. }
    37.  
    38. //ввод//
    39. void Tel::Input(void)
    40. {
    41.   cin>>number_>>mark_>>summ_;
    42. }
    43.  
    44. //скидка//
    45. void Tel:<img src="http://iforum.pro/images/smilies/biggrin.png" border="0" alt="" title="Big Grin" class="inlineimg" />owncost()
    46. {
    47.   cout<<"Discount prices: "<<summ_-5000<<endl<<endl;
    48. }


    main.cpp
    C++ Code:
    1. //запуск стандартных директив//
    2. #include <stdlib.h>
    3. #include <string.h>
    4. #include <iostream>
    5. #include "main.h"
    6.  
    7. //главная функция//
    8. int main()
    9. {
    10.  
    11. //заполнение конструктора//
    12. Tel mobile(1, "Nokia N97", 19999.9);
    13.  
    14. //вызов функции вывода//
    15. mobile.Print();
    16. mobile.Downcost();
    17.  
    18. //заполнение конструктора новыми данными//
    19. Tel *mob2;
    20. mob2 = new Tel(2, "Samsung J3", 23599.9);
    21. mob2->Print();
    22. mob2->Downcost();
    23.  
    24. //очистка памяти//
    25. delete mob2;
    26.  
    27. //вызов функций для нового объекта//
    28. Tel *mob3;
    29.         mob3 = new Tel(int, const char*, float);
    30. mob3->Input();
    31. mob3->Print();
    32. };


    Возникают ошибки в этой строке:
    mob3 = new Tel(int, const char*, float);

    ,по типу expected primary expression before int (char, float). Помогите, пожалуйста, разобраться. Заранее спасибо.
    Ответить с цитированием  
     

  2. #2  
    Профи
    Регистрация
    09.11.2013
    Сообщений
    273
    Сказал(а) спасибо
    17
    Поблагодарили 80 раз(а) в 54 сообщениях
    ехали ехали и приехали... смотри инициализацию mob2
    Цитата Сообщение от Serpent Посмотреть сообщение
    int, const char*, float
    это типы данных, а нужно подставлять данные этих типов! Ферштейн?
    Ответить с цитированием  
     

  3. 3 пользователя(ей) сказали cпасибо:

    >Quiet Snow< (24.10.2018), Free Admin (25.10.2018), Serpent (24.10.2018)

  4. #3  
    Новичок
    Регистрация
    29.11.2017
    Сообщений
    10
    Сказал(а) спасибо
    10
    Поблагодарили 1 раз в 1 сообщении
    Цитата Сообщение от ur_naz Посмотреть сообщение
    это типы данных, а нужно подставлять данные этих типов
    Понимаю, конечно. Просто, до этого пытался отправить код без этой строчки вообще. Преподаватель написал, что в работе нужен явный вызов конструктора без параметров. Вот и не понимаю, как сей вызов оформить.
    Ответить с цитированием  
     

  5. #4  
    Профи
    Регистрация
    09.11.2013
    Сообщений
    273
    Сказал(а) спасибо
    17
    Поблагодарили 80 раз(а) в 54 сообщениях
    Цитата Сообщение от Serpent Посмотреть сообщение
    Преподаватель написал, что в работе нужен явный вызов конструктора без параметров.
    твой преподаватель идиот, и вообще он никто и звать его никак, и вообще он не преподаватель, а черти что. Вот примерно что такое конструктор без параметров.

    И да, функции принт и инпут - полная лажа, за такое надо бить по голове тупым тяжелым предметом. Потому что они нарушают принципы ООП.
    Если ты так напишешь на собеседовании тебя ни в одну даже шарагу не примут.

    Конструктор без параметров применяется для объектов с неизвестными изначально данными, то есть должны быть прописаны методы доступа к данным, либо сами данные могут быть открыты, хотя это типа не приветствуется.
    Разница в том, что у тебя код привязан к консоли, что является дурным тоном, в ООП. Потому что завтра консоли не будет и весь твой код отправится на свалку.
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Последний раз редактировалось ur_naz; 25.10.2018 в 14:29.
    Ответить с цитированием  
     

  6. #5  
    Профи Аватар для rrrFer
    Регистрация
    01.08.2013
    Сообщений
    561
    Сказал(а) спасибо
    34
    Поблагодарили 249 раз(а) в 164 сообщениях
    Цитата Сообщение от ur_naz Посмотреть сообщение
    твой преподаватель идиот
    Я не понял причем тут преподаватель.
    Вызов конструктора без параметров - это так:
    C++ Code:
    1. class A {
    2.   int v;
    3. public:
    4.   A() : v(123) {}
    5. };
    6.  
    7. int main() {
    8.   A* a = new A(); // вот он явный вызов
    9. }


    Это конструктор по умолчанию еще называется. Мало того, компилятор в ряде случаев генерирует его сам (по умолчанию).

    Ну... студент пытается типы данных вместо данных в функцию передать. Проблема в студенте, а не в преподе, ВОЗМОЖНО.

    Цитата Сообщение от ur_naz Посмотреть сообщение
    И да, функции принт и инпут - полная лажа, за такое надо бить по голове тупым тяжелым предметом.
    В данном случае - да, полная лажа. Но в общем случае - нормальные функции. Сериализация и десерализациия называется. Разница лишь в том, что на вход должен поток или строка передаваться, а не cin, cout внутри вызываться.

    Цитата Сообщение от ur_naz Посмотреть сообщение
    Конструктор без параметров применяется для объектов с неизвестными изначально данными
    Да постоянно он применяется.

    C++ Code:
    1. class A {
    2. };
    3. class B : public A {
    4.   B() {
    5.      // вот тут вызывается конструктор A() без параметров, сгенерированный компилятором "по-умолчанию"
    6.   }
    7. };


    Цитата Сообщение от ur_naz Посмотреть сообщение
    Разница в том, что у тебя код привязан к консоли, что является дурным тоном, в ООП. Потому что завтра консоли не будет и весь твой код отправится на свалку.
    Вот с этим полностью согласен. Но это учебный пример, и как вы наверное знаете, программировать обычно начинают с

    C++ Code:
    1. void foo() {
    2.   cout << "hello world";
    3. }


    а не с
    C++ Code:
    1. void foo(std :: ofstream &ofst) {
    2.   ofst << "hello world";
    3. }


    Хотя второй пример более правильный и его можно автоматическими тестами покрыть. Но это учебные задания.

    Я бы не писал этого, если бы не "твой преподаватель идиот" и "надо бить по голове тупым тяжелым предметом". Ну потому что не понимаю откуда столько негатива и зачем вызывать этот негатив у форумчан по отношению к третьим лицам (преподавателю). При этом нехило так подрывается авторитет преподавателя и отношение к системе образования вцелом. Хотя, ВОЗМОЖНО, препод - нормальный, а студент - балбес.
    [Ссылки могут видеть только зарегистрированные пользователи. ] // программирование на Prolog, Erlang, C++
    Ответить с цитированием  
     

  7. 3 пользователя(ей) сказали cпасибо:

    >Quiet Snow< (31.10.2018), Free Admin (31.10.2018), Serpent (01.11.2018)

  8. #6  
    Admin
    Регистрация
    09.04.2014
    Сообщений
    1,220
    Сказал(а) спасибо
    781
    Поблагодарили 493 раз(а) в 405 сообщениях
    Цитата Сообщение от rrrFer Посмотреть сообщение
    Я бы не писал этого, если бы не "твой преподаватель идиот" и "надо бить по голове тупым тяжелым предметом". Ну потому что не понимаю откуда столько негатива и зачем вызывать этот негатив у форумчан по отношению к третьим лицам (преподавателю). При этом нехило так подрывается авторитет преподавателя и отношение к системе образования вцелом. Хотя, ВОЗМОЖНО, препод - нормальный, а студент - балбес.

    Согласен...
    Ответить с цитированием  
     

  9. #7  
    Профи
    Регистрация
    09.11.2013
    Сообщений
    273
    Сказал(а) спасибо
    17
    Поблагодарили 80 раз(а) в 54 сообщениях
    Я бы с вами тоже согласился, но другого способа бороться с невежеством я не знаю. Если преподаватель не понимает, что такое и зачем конструктор по умолчанию, то как его еще назвать?
    Ответить с цитированием  
     

  10. #8  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,944
    Сказал(а) спасибо
    1,847
    Поблагодарили 991 раз(а) в 849 сообщениях
    Записей в блоге
    1
    Согласен и с Володей и с ur_naz одновременно, халатность надо гасить, но преподов трогать не надо.
    Можно было мягче сказать, что препод глуповат, но сказать это действительно требует, разумеется так,
    чтобы это не распространялось на всё комьюнити людей от образования.
    Потому что перед тобой студент, ему нужно дать знания, а не то, с чем ему предстоит бороться.
    И на самом деле тут может быть всё иначе, студент мог прогулять кучу занятий и не понять препода.
    Сказать честно, за всю свою жизнь видел всего одного глуповатого препода(точнее преподшу).
    Вела у нас VB на первом курсе, прогать не умела, от слова, совсем, все ржали. Обидно только, что потом
    начали над ней откровенно прикалываться и она уволилась, я всегда был против подобного поведения,
    потому что так-то тётка неплохая была. Все остальные же были просто мега монстры в своей теме.
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  11. #9  
    Профи Аватар для rrrFer
    Регистрация
    01.08.2013
    Сообщений
    561
    Сказал(а) спасибо
    34
    Поблагодарили 249 раз(а) в 164 сообщениях
    Цитата Сообщение от ur_naz Посмотреть сообщение
    Если преподаватель не понимает, что такое и зачем конструктор по умолчанию, то как его еще назвать?
    Тут не пишет преподаватель. Мы не знаем что он понимает, а что - нет.
    Тут даже нет оригинала задания, которые он выдал бы...
    Зато тут есть рекомендации бить ему по голове. Не понимаю почему.
    [Ссылки могут видеть только зарегистрированные пользователи. ] // программирование на Prolog, Erlang, C++
    Ответить с цитированием  
     

  12. #10  
    Профи
    Регистрация
    09.11.2013
    Сообщений
    273
    Сказал(а) спасибо
    17
    Поблагодарили 80 раз(а) в 54 сообщениях
    Цитата Сообщение от rrrFer Посмотреть сообщение
    Тут не пишет преподаватель.
    Возможно вы не заметили, но если вы прочтете второе предложение того поста, то там сказано, что в первом предложении говорится об объекте типа преподаватель, созданном конструктором без параметров. И этот объект может иметь любые свойства, но вы не можете контролировать это из-за отсутствия параметров. С точки зрения с++ никакого криминала в этом нет. С точки зрения принципов разработки программ это плохо. В данном случае это плохо, потому что не бывает просто телефона. Если вы создаете объект без параметров потрудитесь либо открыть данные, либо наваять сеттерров. Что опять же плохо. Ну и ненужная и неправильная функция инпут, как мы уже выяснили плохая. Опять же открытые данные - не зер гут.
    Вот и получается, что из-за прихоти преподавателя рушится вся пирамида объектно-ориентированной парадигмы. Ну и кто он после этого?
    Здесь два варианта:
    - прихоть невежественного преподавателя;
    - невежественная программа курса, утвержденная свыше, согласно которой преподаватель читает предмет

    В архиве проект С::B с какой-то программой про телефоны, которая собирается и показывает как создать объект, указатель на объект и применить конструктор без параметров. В последнем случае у любого мало мальски интеллектуально развитого человека случится разрыв шаблона.
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

Страница 1 из 2 12 ПоследняяПоследняя
Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 1
    Последнее сообщение: 03.12.2014, 05:18
  2. Ответов: 1
    Последнее сообщение: 16.03.2011, 23:50
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •