Возможно глупый вопрос, не судите строго. В общем, у меня есть объект на него нужно передать ссылку этого-же типа. Думаю код лучше вам объяснит ситуацию:
class ObjA{
};
class ObjB{
ObjA *a;
public:
ObjB(const ObjA& _a){
a = _a;
}
};
При таком коде вылетает такая ошибка: "cannot convert ‘const ObjA’ to ‘ObjA*’ in assignment". Я как понимаю ошибка в том что невозможно сконвертировать ссылочный тип к обычному. P.S Ещё раз извиняюсь за мои возможные ошибки в тексте, из-за непонимания работы С++. Буду рад почитать в комментариях поправки.
Ну смотрите: у вас в объекте хранится УКАЗАТЕЛЬ на ObjA
, в то же время в конструктор вы передаете ССЫЛКУ на ObjA
. У вас несовпадение типов, так как нельзя конвертить ссылку к указателю. Сдесь у вас два варианта:
1) взять адрес OjbA
и присвоить его указателю. Так как адрес ссылки == адресу переменной, то это не проблема, но у вас указатель на неконстантный объект ObjA
, а в конструктор вы передаете константную ссылку, так что либо вы снимаете константность с ссылки, либо добавляете ее к указателю
2) Хранить в ObjB
ссылку, а не указатель. Да, так можно (ссылка это фактически указатель, который не нужно разыменовывать и который не может быть nullptr
(на самом деле может быть, но это другая история)), так что вы можете хранить ссылку в объекте при условии, что она будет инициализирована в конструкторе. По поводу константности - смотрите пункт 1.
В конечном итоге у вас должно получиться что-то вроде:
class ObjA{
};
class ObjB{
const ObjA *a;
public:
ObjB(const ObjA& _a){
a = &_a;
}
};
или
class ObjA{
};
class ObjB{
const ObjA &a;
public:
ObjB(const ObjA& _a){
a = _a;
}
};
PS в конечном итоге вариант, который стоит выбрать, зависит от изменяемости переменной, ссылающейся на ObjA
- если в ObjB
она может быть изменена (имеется ввиду не объект по указателю, а сам указатель), то стоит выбрать вариани с указателем, иначе можно выбрать ссылку.
Во-первых, забыли взятие адреса: a = &_a;
Во-вторых, нужно либо убрать const
с const ObjA& _a
, либо добавить его к ObjA *a;
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я новичок в верстке,так что помидорами не кидайтесь) Как сделаны такие сайты, что слева и справа находится очень длинный фон, а по середине...
Хочу передать значение некоторых полей в таблицу своей БДПроблема в том, что добавляется только две записи и не более, даже если объектов...
Пробую упаковать приложение aspnet core в контейнер докер по статье, всё получается, но есть непонятный момент
Пытаюсь сделать программу которая будет отслеживать запуск определённых процессов, если какой-то процесс запустился отследить его и запустить...