|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.02.2011, 22:34 | #11 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Код:
Последний раз редактировалось profi; 11.02.2011 в 22:46. |
12.02.2011, 01:09 | #12 |
Пользователь
Регистрация: 09.04.2009
Сообщений: 23
|
Я канеш не сведущ, но просто логически так подумать, компилятор разве не должен различать функцию и объявление объекта? Имя класса каГ бЭ намекает... сорри, если пургу несу, интересно просто разобраться ))
|
12.02.2011, 01:14 | #13 |
Форумчанин
Регистрация: 31.01.2011
Сообщений: 160
|
Red_Line
Bow test() можно интерпретировать как функцию test возвращающую объект Bow, а по стандарту такие конструкции интерпретируются как объявления функций |
12.02.2011, 01:14 | #14 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
функция ведь может возвращать объект типа Bow
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
12.02.2011, 01:26 | #15 |
Пользователь
Регистрация: 09.04.2009
Сообщений: 23
|
Эх глупый я, глупый... спасибо за разъяснения, ребята ))
|
12.02.2011, 11:08 | #16 |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
Ошибку уже поправили, но хотелось бы отметить пару косяков. Во-первых, srand ты используешь в конструкторе класса. Там это ни к чему, ибо эту функцию достаточно использовать один раз за всё программу.
Во-вторых, названия методов charging и shooting не сразу дают понять, что именно они понять. Вот, сравни: мой_лук.стреляет() и мой_лук.выстрелить(). Ясен пень, второе понятней. То есть лучше методы назвать charge и shoot. И именования булевых лучше делать не как ready, а как is_ready (а также can_do_smth, в общем чтобы сразу было понятно, что это может быть только правда/неправда), ведь так сразу понятно, что это булева. В-третьих, конструктор можно бы было бы определить и снаружи класса. В-четвёртых, void в качестве параметров писать ни к чему. В-пятых, насчёт getStatus. Что понятней — лук.взятьСтатус или лук.готовСтрелятьСейчас? Ясен пень, второй, ибо «статус» смысловой нагрузки не несёт в данном случае. А вот если бы был, скажем, enum Bow::Status { Ready, Shooting, Charging, Broken } или типа того, то можно бы было возвращать статус, и тогда бы было понятно, о чём речь, но у тебя ведь дело в другом. Да и вообще, геттерам слово get ни к чему. В-шестых, лучше экономить пространство и перенос строки перед открывающей { делать только для: определений функций (исключение: определения метода внутри тела класса, но такого лучше избегать), классы, структуры и пространства имён. Для всего остального лучше писать в той же строке. В-седьмых, поля класса лучше именовать как m_ready или _ready. Так ты сможешь отличить локальные переменные/аргументы функции от полей. Также это поможет избежать variable shadowing. Ну и последнее, скобки лучше открывать всегда. А то возможна такая ошибка: Код:
Код:
Код:
Да, вот ещё что, у тебя зачем-то описан пустой деструктор (можно вообе без него обойтись) и сделан пустой return в конце shooting(). А ещё число «10» ты используешь в двух местах и лучше бы его объявить как константу. А в getStatus лучше просто написать return return (условия). Ох, вот ещё что. Используй константные методы! У тебя метод getStatus должен быть константным. В общем, писал бы я код, он был бы таким: Код:
1) m_is_ready == true писать не к чему. 2) m_arrows_num > 10 проверять дольше, чем значение m_is_ready, так что лучше m_is_ready писать первым пунктом. Ибо если оно false, то ему не придётся сравнивать числа. Вот полезное чтиво по стилю: http://doc.qt.nokia.com/qq/qq13-apis.html http://qt.gitorious.org/qt/pages/QtCodingStyle http://google-styleguide.googlecode....k/cppguide.xml (но в последнем мне несколько пунктов не нравится)
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su Последний раз редактировалось Obey-Kun; 12.02.2011 в 11:12. |
12.02.2011, 14:05 | #17 |
Пользователь
Регистрация: 09.04.2009
Сообщений: 23
|
Спасибо за внимание к моей проблеме!! Обязательно учту всё вышеописанное Вами... часть стиля, кот. у меня присутствует в описании класса честно взят из книг, по кот. я учусь, а часть сам придумал )) вообще это мой первый класс, я просто старался вникнуть в синтаксис/семантику, не особо уделяя внимание читаемости/универсальности кода ))
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при вызове метода класса | coNsept | Общие вопросы C/C++ | 2 | 14.12.2010 13:09 |
Ошибка при реализации метода класса, имеющего поле шаблоннного типа. | DKOI | Общие вопросы C/C++ | 5 | 19.10.2010 19:10 |
Ошибка при запросе SQL в IB | Алекс1 | БД в Delphi | 2 | 24.06.2007 22:37 |