Добрый день.
Пишу простой код, хочу сделать контроль доступа к данным в классе через отдельный класс:
template<class Tclass, Tclass* classptr> class ptr_storage_access_control_tmp {
public:
};
class a {
friend ptr_storage_access_control_tmp<a, this>;
public:
};
В строке
friend ptr_storage_access_control_tmp<a, this>;
транслятор выдает диагностику:
Ошибка (активно) E0258 оператор "this" можно использовать только внутри нестатической функции-члена
Вопрос:
Спасибо.
UPD1:
Да, забыл сказать, транслятор Visual Studio 2017.
Потому что значение this известно только на этапе работы программы (а аргумент шаблона должен известен на этапе компиляции) и доступно только из нестатического метода. Если хотете дать доступ просто классу ptr_storage_access_control_tmp:
template<class Tclass, Tclass* classptr> friend class
ptr_storage_access_control_tmp;
Сборка персонального компьютера от Artline: умный выбор для современных пользователей