Пытаюсь на(ш)кодить класс

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Здравствуйте! Пытаюсь на(ш)кодить класс, который в своей работе ссылается на глобальную переменную glob_var, которая в свою очередь изменяется во время работы программы. Метод test_rout() печатает ноль вместо 0xAA, чего я не понимаю или неправильно делаю?

Дабы не загромождать привожу только то что касается данной переменной.

int glob_var=0xAA;
class class_Test
{public:
int inn_var; 
void test_rout();
  class_Test(int _inn_var){int &inn_var=_inn_var;}
  };
void class_Test::test_rout()
{ int prn_inn_v=inn_var;
  Serial.print(prn_inn_v);
  }

class_Test test(glob_var);
test.test_rout();

 

sadman41
Offline
Зарегистрирован: 19.10.2016

class_Test(int& _inn_var) - как минимум нужно по ссылке передавать параметр, а не по значению.

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Спасибо, но я не совсем точно сформулировал проблему: переменная inn_var ссылается на значение переменной glob_var, которое было на момент конструкции обьекта а не на саму переменную и изменения самой переменной не оказывают воздействия на обьект.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Alexey_Rem пишет:
чего я не понимаю или неправильно делаю?

У Вас изначально неверный подход. Классы не (ш)кодят, их сначала проектируют, а потом пишут. Попробуйте!

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

 

Как бэ требовать проектирования от человека без системного образования, но продумывал класс получился довольно объемный,  в первом приближении работает, должен обращаться к свойству другого объекта (но это пока не проверял), вот тут столкнулся с такой непоняткой и два дня чешу репу, можно обойти проблему конечно, но хочется докопаться, своих мыслей не осталось вот и спросил может кто поможет. А когда такие проблемы перестанут появляться вот тогда смогу сказать "пишу" а сейчас как в заголовке

sadman41
Offline
Зарегистрирован: 19.10.2016

Зачем тогда вот этих червячков рисуете, если значение нужно?

class_Test(int _inn_var){inn_var=_inn_var;}

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Нет, мысль была такая ссылка int &inn_var=_inn_var; и потом по ней обращаться к переменной

sadman41
Offline
Зарегистрирован: 19.10.2016

Зачем?

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Это нужно для некоторых методов класса

sadman41
Offline
Зарегистрирован: 19.10.2016

Ну, тогда продолжайте компилировать. Может компилятор сдастся через некоторое время.

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Извините не хотел обидеть, просто хочется разобраться где я ошибаюсь 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Alexey_Rem пишет:

Это нужно для некоторых методов класса

Не нужно.

Если класс А должен иметь доступ к некоторому полю класса В, то в классе В должны быть для этого соответствующие методы.

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Здесь пока не идет речь о доступе к методу класса, а о чтении значения глобальной переменной, которая меняется во время выполнения кода 

sadman41
Offline
Зарегистрирован: 19.10.2016

Если нужно, чтобы одна переменная была алиасом другой - необходимо, чтобы их адреса совпадали. Это делается указателем. А чтобы указатель можно было использовать внутри функции, его туда нужно или передать как указатель или срисовать с переменной, переданной по ссылке.

Сюда и копайте. А то значения присваивание неизвестно чему.

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Спасибо буду пытаться