Доступ к информации объекта 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++ тоже как "не родной". А тот что "родной" уже давно морально устарел.
Вот немного переделал. Похоже указатель на представителя класса компилятор Ардуины не правильно создает.
class qw_a{ public: int AAA; // Создаем 1 класс и переменную в нем qw_a(){AAA = 1;}; }; 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(){ int A = (q_Object->AAA); Serial.println(A); } //=== программа ==== qw_a ObjectA; qw_a * p_ObjectA; qw_b ObjectB(p_ObjectA); void setup() { Serial.begin(9600); ObjectB.func(); // понятно что в мониторе должно быть 1. Но почему-то другое число. } void loop() { }В строке 21 Вы создаете указатель, но не инициализируете его. А потом этот пустрой указатель пытаетесь передать qw_b.
Думаю, строку 21 нужно удалить, а следующую строку записать так:
qw_b ObjectB(&ObjectA);Спасибо. Похоже работает.
компилятор Ардуины не правильно создает
Вы так больше никогда и никому не говорите, пожалуйста.