Начальное значение ссылки на неконстантное значение должно быть lvalue в ctorC++

Программы на C++. Форум разработчиков
Ответить
Гость
 Начальное значение ссылки на неконстантное значение должно быть lvalue в ctor

Сообщение Гость »


Я пишу программу с виртуальным классом компонента, который подробно описывает поведение компонента, которому необходимо получить доступ к регистрам устройства через шину. Различные операции с регистрами описываются в виртуальном классе, который не зависит от типа используемой шины. Производный класс RegisterI2C реализует функции доступа к регистрам для шины I2C. Класс ComponentI2C соответствует использованию компонента, использующего шину I2C. В этом классе я пытаюсь определить функцию компонент_reg, которая вызывает конструктор класса RegisterI2C, но во время компиляции получаю следующую ошибку:

начальное значение ссылки на неконстантное значение должно быть lvalue C/C++(461).

Я пробовал разные типы приведения, но не нашел решения. Так что буду признателен, если у кого-нибудь возникнут идеи :)

Компонент класса; class Register { // определяет метод доступа к регистрам публика: Регистр(Компонент *родитель, int reg): родитель_(родитель), регистр_(рег) {} виртуальный int read() = 0; // читаем регистр Компонент *const родитель_; // родительский компонент интервал регистр_; // регистр, с которым нужно работать }; class Component { // определяет, что делает компонент. Использует функции регистра виртуальный регистр &comComponent_reg(int reg) = 0; // возвращаем регистр, который мы используем для операции на компьютере }; класс I2C {}; // предоставляет функции шины I2C класс КомпонентI2C; class RegisterI2C : public Register { // реализация функции регистрации для шины I2C публика: RegisterI2C(Component *parent, int reg): Register(parent, reg) {} /* использовать методы класса I2C путем приведения Component к ComponentI2C */ int read() переопределить {вернуться 0; } }; класс ComponentI2C: общедоступный компонент, общедоступный I2C { публика: RegisterI2C &comComponent_reg(int reg) override { return {this, reg}; }; // **ЗДЕСЬ ПРОБЛЕМА** }; Примечание: возврат компонент_reg в качестве указателя невозможен :(
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»