Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

Использование -> вместо . - почему компилятор пропускает этот случай?

24.02.2019, 10:33. Показов 2815. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
    node_t(const node_t<T>& target)
    {
        init(target->value, target->ptr_next);
    }
Почему использование -> позволяется? Разве не должна быть ошибка компиляции и требоваться . вместо ->? Что также сбивает с толку - анализатор кода реагирует без проблем на оба случая - показывая члены node_t.
1
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.02.2019, 10:33
Ответы с готовыми решениями:

Почему компилятор жалуется на неправильное использование оператора ?:
Query = &quot;INSERT INTO Transport (IsIn) VALUES('&quot; + Convert.ToBoolean(this.IsInCheckBox.IsChecked) ? '1' : '0'; +&quot;') Пользуюсь ?: так...

Почему компилятор ругается на использование шаблона (template)?
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;chrono&gt; #include &lt;ctime&gt; #include &lt;thread&gt; #include...

Компилятор пропускает getline
добрый вечер, пишу лабу для 10 класса по переводу числа из одной СС в другую. По неведомой мне причине компилятор пропускает строчку с...

26
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
24.02.2019, 19:26
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Croessmah Посмотреть сообщение
круто

Добавлено через 30 минут
Croessmah, я правильно понял что:
C++
1
2
3
4
S *s;
...
s.b = 42;  // тут непосредственно в стек 42 пишется со смещением
           //2 байта, а не по адресу который в указателе лежит?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
24.02.2019, 20:19
Цитата Сообщение от rat0r Посмотреть сообщение
Долой избыточность! Всем использовать if и goto вместо циклов!
Операторы цикла упрощают чтение и написание кода. Оператор стрелочка - нет

Добавлено через 11 минут
Цитата Сообщение от Croessmah Посмотреть сообщение
Изначально в C эти операторы должны были иметь различное назначение.
Подробнее: https://stackoverflow.com/ques... in-c-exist
Да уж... всё-таки историческое наследие. Возможно, это сейчас кажется очевидным, что такую совместимость тащить не стоило, но 30 лет назад, думается, больше думали о том, как бы меньше переписывать существующий софт, чем о том, что много лет спустя это вызовет много геморроя и головной боли

Добавлено через 4 минуты
Цитата Сообщение от _stanislav Посмотреть сообщение
Croessmah, я правильно понял что:
По смыслу это было эквивалентно нынешнему:

C
(int*) ((char*)&s + 2) = 42;
Добавлено через 1 минуту
Т.е. запись вовнутрь переменной-указателя. А поскольку тут ещё и выход за границу двухбайтового указателя произошёл, то испортили какие-то данные по соседстве
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
24.02.2019, 20:24
Цитата Сообщение от Evg Посмотреть сообщение
По смыслу это было эквивалентно нынешнему:
это же псевдокод? &s - это значит адрес указателя?

Добавлено через 1 минуту
Цитата Сообщение от Evg Посмотреть сообщение
А поскольку тут ещё и выход за границу двухбайтового указателя произошёл, то испортили какие-то данные по соседстве
int в те времена не был двухбайтовым?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
24.02.2019, 21:01
Цитата Сообщение от Evg Посмотреть сообщение
Возможно, это сейчас
Пришлось бы изобретать альтернативу для перегрузки.
Всё что не делается, - к лучшему.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
24.02.2019, 21:36
Цитата Сообщение от _stanislav Посмотреть сообщение
это же псевдокод?
Нет, это реальный код

Цитата Сообщение от _stanislav Посмотреть сообщение
&s - это значит адрес указателя?
Да

Цитата Сообщение от _stanislav Посмотреть сообщение
int в те времена не был двухбайтовым?
В те времена int и указатель были двухбайтовыми
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
24.02.2019, 22:10
Цитата Сообщение от Evg Посмотреть сообщение
Нет, это реальный код
он должен работать? у меня не работает.

Добавлено через 1 минуту
пишет E0137 выражение должно быть допустимым для изменения левосторонним значением
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
24.02.2019, 22:13
От левой части забыл звёздочку взять

C
*((int*) ((char*)&s + 2)) = 42;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2019, 22:13
Помогаю со студенческими работами здесь

Компилятор пропускает цикл
Здравствуйте, в общем думаю однажды, когда нибудь, у всех такая проблема возникала. В общем в отладчике искал проблему и когда...

Компилятор пропускает цикл
Здравствуйте товарищи. Столкнулся с проблемой, что компилятор пропускает цикл. Компилировал в VS2012. Потом сменил её на MinGW. Всё...

Компилятор пропускает строчки с инициализацией
здравствуйте! Копмилятор пропускает строчки с инициализацией переменных. При попытке поставить маркер, переносит этот маркер на строчку...

Компилятор пропускает две строчки
Здравствуйте! Вкратце о задании: нужно создать структуру, с помощью которой будет вводится информация о товаре. Два элемента структуры...

Компилятор пропускает строки кода
Начал писать морской бой но сталкнулся со сложность что компилятор пропускает строчки кода.Я начинающий програмист на c++. ...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru