Пытаюсь на(ш)кодить класс
- Войдите на сайт для отправки комментариев
Вс, 03/10/2021 - 16:31
Здравствуйте! Пытаюсь на(ш)кодить класс, который в своей работе ссылается на глобальную переменную 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();
class_Test(int& _inn_var) - как минимум нужно по ссылке передавать параметр, а не по значению.
Спасибо, но я не совсем точно сформулировал проблему: переменная inn_var ссылается на значение переменной glob_var, которое было на момент конструкции обьекта а не на саму переменную и изменения самой переменной не оказывают воздействия на обьект.
У Вас изначально неверный подход. Классы не (ш)кодят, их сначала проектируют, а потом пишут. Попробуйте!
Как бэ требовать проектирования от человека без системного образования, но продумывал класс получился довольно объемный, в первом приближении работает, должен обращаться к свойству другого объекта (но это пока не проверял), вот тут столкнулся с такой непоняткой и два дня чешу репу, можно обойти проблему конечно, но хочется докопаться, своих мыслей не осталось вот и спросил может кто поможет. А когда такие проблемы перестанут появляться вот тогда смогу сказать "пишу" а сейчас как в заголовке
Зачем тогда вот этих червячков рисуете, если значение нужно?
class_Test(int _inn_var){inn_var=_inn_var;}
Нет, мысль была такая ссылка int &inn_var=_inn_var; и потом по ней обращаться к переменной
Зачем?
Это нужно для некоторых методов класса
Ну, тогда продолжайте компилировать. Может компилятор сдастся через некоторое время.
Извините не хотел обидеть, просто хочется разобраться где я ошибаюсь
Это нужно для некоторых методов класса
Не нужно.
Если класс А должен иметь доступ к некоторому полю класса В, то в классе В должны быть для этого соответствующие методы.
Здесь пока не идет речь о доступе к методу класса, а о чтении значения глобальной переменной, которая меняется во время выполнения кода
Если нужно, чтобы одна переменная была алиасом другой - необходимо, чтобы их адреса совпадали. Это делается указателем. А чтобы указатель можно было использовать внутри функции, его туда нужно или передать как указатель или срисовать с переменной, переданной по ссылке.
Сюда и копайте. А то значения присваивание неизвестно чему.
Спасибо буду пытаться