using
Директивы для имен членов базового класса имеют смысл только на уровне класса, где они служат для отображения имен членов базового класса, которые в противном случае могли бы быть скрыты.
Они не имеют смысла в области действия функции и поэтому не допускаются туда.
Что вы можете сделать, это:
struct Derived : public Base<X>
{
using Base<X>::get_data;
//...
};
(Это имеет смысл только из-за контекста шаблона и того факта, что get_data()
не зависит от каких-либо параметров шаблона. В обычном классе это вообще не понадобится, если вы не намеренно скрываете функция.)
В области действия функции разрешены только директивы using
, которые вводят имена из других пространств имен для поиска в зависимости от аргумента.
Также обратите внимание, что do
является ключевым словом C ++.