Возможно ли присвоить «ничего» в ссылку?
Опишу задачу:
1. Есть поле структуры, ну допустим ref. Оно хранит ссылку на какую либо переменную.
2. Изначально переменная должна быть пустой, а в конструктор структуры должна приходить ссылка на переменную, и присваиваться в ref
Есть ли какой то способ сделать это? Или любой аналог - главное: инициализировать ссылку;
template<typename T> struct Test { T& ref; // нужно присвоить null Test(const T& _ref) : ref(_ref) = default; } |
template<typename T> struct Test { T& ref; // нужно присвоить null Test(const T& _ref) : ref(_ref) = default; }
ps: может даже не структура, а класс
Дополнительно:
Ссылки в С++ - это синтаксический сахар над указателями.
Созданный ради устранения проблемы разыменования нулевого указателя.
Собственно, именно отсутствием озвученной возможности ссылка от указателя и отличается.
Если ваша логика подразумевает пустой объект - ну, запрограммируйте пустой объект этого класса (то есть такой, который будет отличаться от заполненных). А бороться с языком - не надо.
Примерно то, что вам нужно - можно. Только ссылки никогда не бывают нулевыми. Поэтому вам надо во всех конструкторах класса ссылку чем-то инициализировать.
В вашем коде 2 проблемы. = default; можно писать, если у вас нет никакого списка инициализации. И константную ссылку нельзя использовать для инициализации неконстантной.
Вот такой код компилируется:
template<typename T> struct Test { T& ref; // нужно присвоить null Test(T& _ref) : ref(_ref) {}; }; |
template<typename T> struct Test { T& ref; // нужно присвоить null Test(T& _ref) : ref(_ref) {}; };
- Тут кстати нету проблем с компиляцией, просто как пример
- Евгений Мартынов,
Тут кстати нету проблем с компиляцией
Да ладно:
error: expected ‘{’ before ‘=’ token 16 | Test(const T& _ref) : ref(_ref) = default;
error: expected ‘{’ before ‘=’ token 16 | Test(const T& _ref) : ref(_ref) = default;
- Wataru, ну это как пример)) повторюсь, тут суть не в том
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Да, возможно присвоить "ничего" в ссылку. Для этого нужно просто использовать значение "javascript:void(0)" в качестве значения атрибута href в теге . Это делается для того, чтобы предотвратить переход по ссылке при клике на нее.
Пример использования:
<a href="void(0)">Нажмите здесь</a>
Этот код создаст ссылку "Нажмите здесь", но при клике на нее ничего не произойдет. Вместо этого можно добавить JavaScript код, который выполнится при клике на ссылку:
<a href="void(0)">Нажмите здесь</a>
Таким образом, присвоив "ничего" в ссылку, можно контролировать поведение при клике на нее и выполнить необходимые действия без перехода по адресу.