Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
1

Странные ошибки

10.06.2012, 10:43. Показов 1043. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! У меня есть такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class StringParser {
    private:
        char* str;
        char* seperators;
        int position;
    public:
        StringParser (char* newStr) {
            str = newStr;
            seperators = new char[1];
            seperators[0] = ',';
            position = 0;
        }
        char* getNextPart () {
 
        }
};
Он хорошо компилируется. Но вот такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class StringParser {
    private:
        char* str, seperators; // отличие только в том, что здесь я
                                              // два объявления сделал в одной строке через запятую
        int position;
    public:
        StringParser (char* newStr) {
            str = newStr;
            seperators = new char[1]; // ошибка появляется здесь
                                                            // говорит, "cannot convert (char*) to (char)"
                                                            // но ведь я объявил переменную seperators как переменную типа (char*)
            seperators[0] = ',';
            position = 0;
        }
        char* getNextPart () {
 
        }
};
компилироваться не хочет! Можете помочь мне разобраться, в чем тут дело?

Заранее благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.06.2012, 10:43
Ответы с готовыми решениями:

Странные ошибки в c++
Добрый день! Помогите пожалуйста, что это за ошибки такие?Что можно сделать? П.5.18.Правил ...

Странные ошибки в функции
#include <iostream> using namespace std; struct times { int hours; int minutes;...

Странные ошибки. (corecrt_search.h)
Здравствуйте. Хотел поинтересоваться, что значат эти ошибки, и каким способом их можно...

Странные ошибки после объявления using namespace std
Доброго времени суток недавно решал кое какую задачку и возникла проблем в принципе не критическая...

14
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
10.06.2012, 10:53 2
Цитата Сообщение от Hagrael Посмотреть сообщение
char* str, seperators;
C++
1
char *str, *seperators;
1
Полярный
 Аватар для dimcoder
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
10.06.2012, 10:54 3
C++
1
char* str, seperators;
или
C++
1
char *str, *seperators;
1
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
10.06.2012, 11:03  [ТС] 4
Ах да, точно! Ведь звездочка относится не ко всем перечисляемым переменным, а только к одной! Спасибо!
0
Эксперт С++
5057 / 3117 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.06.2012, 13:55 5
dimcoder, расположение звёздочки не имеет значения. В первом случае указателем всё равно будет только str.
0
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 34
11.06.2012, 14:55 6
Советую вам при объявлении указателей ставить звездочку рядом с именем указателя, а не рядом с типом. Это логичнее и запутаться сложнее:

C++
1
int *p;
1
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
11.06.2012, 16:03  [ТС] 7
Сапожок, понятно, спасибо!
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
11.06.2012, 17:03 8
А в чем логика рассположения звездочки рядом с именем а не с типом?
Где это логично, кроме вот таких вот мест с объявлением нескольких перменных в одной строке, что считается плохим стилем и что лучше не использовать?
По мне, так логичнее звездочку расспологать рядом с int, потому что эта звездочка - это типообразующий символ и логично ее рассположить рядом с другими типообразующими символами (словами) и отделить тем самым от имени объекта этого типа. тип визуально отделен от имени имени объекта, что улучшает читабельность.
Хотелось бы услышать аргументы тех, кто исповедует такой стиль:
int *ptr;
int* const cptr; // как быть тут с логикой? куда помещать звездочку?
int *function();
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.06.2012, 17:11 9
Цитата Сообщение от DU Посмотреть сообщение
А в чем логика рассположения звездочки рядом с именем а не с типом?
Мне так больше нравится. И все.

Цитата Сообщение от DU Посмотреть сообщение
int* const cptr; // как быть тут с логикой? куда помещать звездочку?
Не тот случай.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    int a;
    int b;
 
    int const *aPtr_one = &a;
    int *const aPtr_two = &a;
 
    //*aPtr_one = 4;    Compile error
    *aPtr_two = 4;
 
    aPtr_one = &b;
    //aPtr_two = &b;    Compile error
 
    return 0;
}
0
Эксперт С++
5057 / 3117 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
11.06.2012, 17:13 10
DU, если начнутся аргументы, то автоматически начнётся оффтоп и холивар.
 Комментарий модератора 
Если это произойдёт - закрою тему.
0
Заблокирован
12.06.2012, 00:45 11
Цитата Сообщение от Сапожок Посмотреть сообщение
Советую вам при объявлении указателей ставить звездочку рядом с именем указателя, а не рядом с типом. Это логичнее и запутаться сложнее:
Не советую. Это не логично, и сбивает с толку.

C++
1
char* name; //логичнее выделять, что есть тип, а что есть объект
0
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 34
12.06.2012, 00:49 12
DU, В разных случаях - разные места. =)
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
12.06.2012, 01:31 13
Давайте не будет тут ругаться. если священной войны не будет, то все вроде как по правилам. + автор со своей проблемой разобрался, почему бы немного не свернуть от темы топика. никому от этого плохо не будет.

Агрумент "мне так больше нравится" - это не аргумент. это субъективное предпочтение. никакой логики в этом нет, но если нравится - то ради бога. кодинг стайлы еще это могут диктовать без объяснений. тут тоже особо не по выбираешь. нужно следовать если требуют. Но если есть выбор,
то лучше себе как-то этот выбор попробовать объяснить.
"разных случаях - разные места (наверно имелись в виду способы)" - это имхо хуже, чем во всех случаях одинаково (есть лишь одно исключение, когда несколько переменных объявляют в одной строке).
Ну и самый большой плюс, когда звездочки и амперсенды сразу после имен типов - это отделение типа от имени объекта.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
12.06.2012, 01:43 14
Цитата Сообщение от DU Посмотреть сообщение
если священной войны не будет
Будет
Поскольку всплывший вопрос определённо холиварный, то правильнее всего было бы создать тему в соответствующем разделе (если её там ещё нет), а сюда закинуть ссылку.
0
silent_1991
12.06.2012, 11:07     Странные ошибки
  #15
 Комментарий модератора 
Как и обещал. Тем более, с вопросом уже разобрались.
0
12.06.2012, 11:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2012, 11:07
Помогаю со студенческими работами здесь

Странные символы
Нужно заменить символ 'd' на символ 'в'. Сделал такой командой: "s1 = s1->Replace('d', 'в');", НО...

Странные типы
Всем добрый день. Хотелось бы узнать ответы на 2 вопроса: 1. Шаблонный тип - тип использующийся...

Странные байты
Делаю запрос из базы и вывожу в HEX int main(int argc, char** argv) { sqlite3* DB; ...

Странные ситуации
У меня вот такая проблема. Если я компилирую и запускаю консольное приложение в visual studio...

Странные поведения с float
Здравствуйте, объясните пожайлуста почему при выполеннии этого кода: #include <iostream> using...

Странные результаты деления
//Обнаружил странное исполнение функции деления в CodeBlocks 13.12 #include <iostream>...


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

Или воспользуйтесь поиском по форуму:
15
Закрытая тема Создать тему
Новые блоги и статьи
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru