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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2014, 19:50   #11
Denis_nn
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 22
По умолчанию

Я ваще не стал вникать во все выше написанное, по поводу eval_exp6 могу пояснить (расшифровки данной функции в книге не дается), но как человек со скромной долей мозга могу предположить, что eval в данном контексте, это expression value (значение выражения), а exp6 соответственно exrpession 6 (выражение 6). Итого: мы получаем на выходе - значение 6го выражения! Вот такое вот дерьмо! А насчет номеров у функций,это естесственно, это таблица приоритетов, че, словами что-ли их писать, сам подумай! А насчет get_token() должен ВОЗВРЩАТЬ ТОКЕН, я надеюсь, ты просто не заметил, что это private функция класса! Хм.. видимо она выполняет какие-то действия с переменными класса! И Хм.. здесь есть массив символов под названием token!))) В принципе ты прав, просто она не возвращает значение,а инициализирует его внутри. Это часто происходит с переменными класса, для работы с ними в классе должен быть прописан интерфейс и get_token() часть этого интерфейса!
Denis_nn вне форума Ответить с цитированием
Старый 27.08.2014, 21:35   #12
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
А насчет get_token() должен ВОЗВРЩАТЬ ТОКЕН, я надеюсь, ты просто не заметил, что это private функция класса! Хм.. видимо она выполняет какие-то действия с переменными класса! И Хм.. здесь есть массив символов под названием token!)))
Тем более. Если есть поле token, то get_token - это геттер, должен выглядеть примерно так:
char *Parser::get_token() { return token; }
И никаких там "инициализирует внутри".

Цитата:
а exp6 соответственно exrpession 6 (выражение 6)
Я не знаю что такое выражение 6, из описания класса не очевидно.

Не понятно почему нет выражения 7 и 8 и 9. Не понятно почему номер выражения жестко приделан к имени, а не является аргументом.
exp(int expnumber)
Типа того.

Короче говнокод это 100%.

Цитата:
что это private функция класса
Приватные члены должны быть описаны тоже нормально. Даже если обычный пользователь это не увидит, то придет джуниор и начнет дорабатывать твой говнокод. Все к хе*рам сломает вам и будет прав.

Цитата:
(выражение 6). Итого: мы получаем на выходе - значение 6го выражения! Вот такое вот дерьмо! А насчет номеров у функций,это естесственно, это таблица приоритетов
Дак 6 - это приоритет или номер выражения? - сам уже запустался в своем свежем говнокоде 100% ))
Чем номер выше, тем приоритетнее или наоборот? )

Если код плохой, то чтобы понять все это, надо вникать часами (ну прям как в твоем примере). Если код нормальный, то вопросы такие ваще не возникнут.
rrrFer вне форума Ответить с цитированием
Старый 27.08.2014, 21:35   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А насчет номеров у функций,это естесственно, это таблица приоритетов
Ух ты... А я думал что это функции для 6 компонентов в выражении...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.08.2014, 21:56   #14
Denis_nn
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 22
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Если есть поле token, то get_token - это геттер, должен выглядеть примерно так:
char *Parser::get_token() { return token; }
И никаких там "инициализирует внутри".
Можешь пояснить, для чего фунции возвращать значение, если массив класса с которым она работает инициализируется внутри этой функции? ради прикола? Это поле доступно этой функции. Ты когда сеты для полей класса пишешь, возвращаешь значения?

И с чего ты взя,что это геттер,это сеттер!

короче говоря! Эта функция делает гет значения из общего массива, для массива token. Для token она сет!

Последний раз редактировалось Stilet; 27.08.2014 в 22:17.
Denis_nn вне форума Ответить с цитированием
Старый 27.08.2014, 22:19   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
И с чего ты взя,что это геттер,это сеттер!
Потому что ты дал ей имя с префиксом get
По-моему логично предположить что "мяу" говорит не корова.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.08.2014, 22:27   #16
Denis_nn
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 22
По умолчанию

Не я дал ей это имя, а чувак выше по тексту! Видимо он просто не в курсе, что не в коем случае нельзя давать такие имена функциям не возвращающим значения.)))) Возможно ему еще раз стоит перечитать Страуструпа перед тем,как писать подобные книги!))) Может, хоть чему-нибудь научится в конце концов!
Denis_nn вне форума Ответить с цитированием
Старый 27.08.2014, 23:03   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Не я дал ей это имя, а чувак выше по тексту!
Цитата:
Добрый вечер! Пишу parser, который состоит из 3х файлов: main.cpp, parser.cpp, parser.h. До недавнего времени было все в порядке, но вдруг почему-то перестало компилироваться и компилятор выдает ошибки линкера:
parser.obj : error LNK2001: unresolved external symbol "private: void __thiscall parser::serror(enum parser::errorsT)" (?serror@parser@@AAEXW4errorsT@1@@Z )
1>parser.obj : error LNK2001: unresolved external symbol "private: void __thiscall parser::get_token(void)" (?get_token@parser@@AAEXXZ)
1>parser.obj : error LNK2001: unresolved external symbol "private: void __thiscall parser::eval_exp3(double &)" (?eval_exp3@parser@@AAEXAAN@Z)
1>
Это чьи слова?
А вообще не понимаю что мы тут спорим? Ответ дан? - дан. Рассмотрен? - рассмотрен. Тема исчерпала себя в полной мере.
Цитата:
Херб Шильдт Фридман. C++ архив программ, глава 13 Объектно ориентированный анализатор выражений, стр.483.
Если мы из-за этого чувака тут спорим то грош нам цена.
I'm learning to live...

Последний раз редактировалось Stilet; 27.08.2014 в 23:05.
Stilet вне форума Ответить с цитированием
Старый 27.08.2014, 23:20   #18
Denis_nn
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 22
По умолчанию

Ну.. хз, возможно! Может спать пойдем?)))
Denis_nn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема линкера "ссылка на неразрешенный внешний символ" denrubun Общие вопросы C/C++ 4 26.02.2013 14:12
Ошибка линкера Denis_nn Общие вопросы C/C++ 4 18.07.2012 19:00
ошибка линкера: indefined reference to 'EnumPrintersW@28' agronomchek Помощь студентам 5 04.03.2012 16:38
Ошибка линкера: error LNK2001: unresolved external symbol _WinMain@16 krugolet Visual C++ 4 02.01.2012 23:03
Опция линкера /NODEFAULTLIB kot111 Общие вопросы .NET 9 30.12.2007 18:22