Доступ к информации объекта 1 класса объектом 2 класса
- Войдите на сайт для отправки комментариев
Пт, 29/07/2016 - 17:09
Ну вот в общем код. Компилируется, но похоже неправильно работает. Или я чего-то не вижу. Прошу помочь.
class qw_a{ public: int intA10; // Создаем 1 класс и переменную в нем qw_a(){intA10 = 10;}; }; class qw_b{ public: qw_b(qw_a Object); // Создаем 2 класс и указатель на объект построеный на основе 1 класса qw_a * q_Object; void func();// создаем функцию , которая добывает информацию из объекта 1 класс }; qw_b::qw_b(qw_a Object){ q_Object = & Object; } void qw_b::func(){ Serial.println(q_Object->intA10); } //=== программа ==== qw_a ObjectA; qw_b ObjectB(ObjectA); void setup() { Serial.begin(9600); ObjectB.func(); // понятно что в мониторе должно быть 10. Но почему-то другое число. } void loop() { }
Код работает в точности так, как написан.
PS. Честно говоря, C\C++ не мой родной язык, поэтому могу и напутать, но я бы передавал параметром не сам объект, а его адрес. В обычном случае при передаче по значению в подпрограмму передается копия объекта, а не он сам.
Пожалуста напиши код. Но только рабочий. Для меня C\C++ тоже как "не родной". А тот что "родной" уже давно морально устарел.
Вот немного переделал. Похоже указатель на представителя класса компилятор Ардуины не правильно создает.
В строке 21 Вы создаете указатель, но не инициализируете его. А потом этот пустрой указатель пытаетесь передать qw_b.
Думаю, строку 21 нужно удалить, а следующую строку записать так:
qw_b ObjectB(&ObjectA);
Спасибо. Похоже работает.
компилятор Ардуины не правильно создает
Вы так больше никогда и никому не говорите, пожалуйста.