Форум программистов, компьютерный форум, киберфорум
Наши страницы

Передача объекта параметром и последующее изменение - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Возможные перестановки символов http://www.cyberforum.ru/cpp-beginners/thread89794.html
Всем, привет! Нужно вывести на экран все возможные перестановки n введенных символов. У меня получилось без рекурсии, а вот она то и должна быть использована.. Скиньте код если можна , или ссылку на...
C++ указатели 1. Дан массив с. Отобразите на экране элементы 1 строки. 2. Распечатать введенный массив в порядке возрастания. 3. Определите количество гласных букв во введенной строке. http://www.cyberforum.ru/cpp-beginners/thread89758.html
Суммировать целые числа от 1 до 99 с помощью for C++
1. Определить значение prod и х после выполнения операции ( начальное значение x=5,prod=l) prod=*x++; 2. Суммировать целые числа от 1 до 99 с помощью for ...
Картинка C++
Помогите написать код - нужно при нажатии на 1ю кнопку выходила 1я картинка, при нажатии на 2ю кнопку - 2я картинка.
C++ Проверка на четность http://www.cyberforum.ru/cpp-beginners/thread89752.html
Возникло 2 вопроса . Как проверить многозначное целое число на четность разрядов? Как рассмотреть разряды этого числа попарно как последовательности из пар чисел. Заранее благодарен!
C++ Странное условие задания У Дейтлов есть задачка: Компания хочет передавать данные по телефону, но она обеспокоена возможностью телефонного перехвата. Все передаваемые данные являются четырехзначными целыми числами.... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
18259 / 6384 / 440
Регистрация: 30.03.2009
Сообщений: 17,666
Записей в блоге: 28
26.01.2010, 21:55
C++
1
operand1->NewBinOp (operand1,operand2,OP_DIVIDE)
Насколько я понимаю, сия строка должна создавать новый экземпляр класса. А ты пытаешь существующий экземпляр затащить сам в себя. Если я правильно понимаю то, что ты хочешь, то это должно выглядеть как

C++
1
operand1 = new expr_Node_t (operand1,operand2,OP_DIVIDE); // <-- это конструктор для создания двухоперандного узла
а то, что у тебя сделано в качестве NewBinOp, должно быть конструктором.

Поскольку в твоём случае все expr'ы создаются динамически и вообще не должны копироваться друг в друга (имею в виду не должны копироваться экземпляры класса, указатели конечно же можно), то я бы вообще сделал copy-конструтор, в котором влепил бы вызов Fatal, т.к. таких действий быть не должно

Добавлено через 21 минуту
"это конструктор для создания двухоперандного узла" читать как "инициализации"

В твоём примере ты инициализируешь поля существующего экземпляра. А надо инциализировать поля вновь созданного экземпляра. Т.е. вместо "kind = EK_BINOP" должно быть "operand1->kind = EK_BINOP" и т.д. А вместо "return this" должно быть "return operand1". При таком подходе идеологически это перестаёт быть методом класса, а является обычной функцией

В Си++ есть возможность в одном операторе создать новый объект в динамической памяти и вызвать процедуру для инициализации полей (оператор new). В Си нет возможности, а потому там обычно создаётся функция, внутри которой делается выделение памяти и инициализация полей
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru