У меня проблемы с шаблонной структурой.
template<typename T>
struct A{
const int v1;
T* v2;
};
Моя цель - сделать v1
всегда недоступным для редактирования, тогда как v2
должен быть редактируемым, если я использую T
, и не редактируемым, если я использую const T
как тип.
Если я создаю конструктор для инициализации A
, структура становится такой:
template<typename T>
struct A{
const int v1;
T* v2;
A() : v1(-1) { v2=NULL; }
A(int value) : v1(value) { v2=NULL; }
};
Но тогда g ++ говорит, что мне нужен определенный оператор присваивания:
ошибка: нестатический константный член "const int A :: v1", не может использовать оператор присваивания по умолчанию
Но мой оператор присваивания должен также разрешить редактирование v1
. Единственное, чего я хотел бы избежать - это редактирование извне, что-то вроде:
A a;
a.v1=10;
Есть ли способ реализовать это (без создания метода получения / установки или использования указателя на новое A (int) с желаемым значением)?
Что если я объявлю v1 как const int *? Он может как-то ссылаться на какое-то значение, но не может его редактировать.