Russian Qt Forum

Программирование => С/C++ => Тема начата: Azazello от Июнь 21, 2021, 16:01



Название: c++ using
Отправлено: Azazello от Июнь 21, 2021, 16:01
class BaseClass {
public:
    Конструкторы,
    Консрукторы
    .........
    
   operator() =
   operator() =
};

class DeriveClass {
public:
   using BaseClass::BaseClass;   //здесь мы заюзали все конструкторы из базового класса без переопределния их ручками.

   using BaseClass::operator=;   //КАК?
}

Вопрос собственно - как "унаследовать" с помощью using оператор копирования. Раз уж конструктор копирования можно так использовать, то как оператор присваивания?


Название: Re: c++ using
Отправлено: __Heaven__ от Июнь 23, 2021, 07:14
https://ideone.com/sBRvjx

Код
C++ (Qt)
class A {
public:
   A(int) {}
   A& operator=(int){return *this;}
};
 
class B: public A {
   using A::A;
   using A::operator=;
};
 
int main()
{
   B a(1), b(1);
   a = b;
   return 0;
}
 


Название: Re: c++ using
Отправлено: Igors от Июнь 23, 2021, 09:02
В обоих случаях: что должно происходить с членами которых нет у базового "A" ? Останутся  "как есть" (другого не видно)?. А если это контейнер, напр std::vector?


Название: Re: c++ using
Отправлено: Azazello от Июнь 23, 2021, 16:07
https://ideone.com/sBRvjx

Код
C++ (Qt)
class A {
public:
   A(int) {}
   A& operator=(int){return *this;}
};
 
class B: public A {
   using A::A;
   using A::operator=;
};
 
int main()
{
   B a(1), b(1);
   a = b;
   return 0;
}
 

Та не работает. Возможно из-за Templates.
Спасибо за ответ конечно, я промоделирую вашу ситуацию для шаблонов...... (просто ; пропустил, в оригинале она есть).

Давайте попробую в своих шаблонах по нарастающей, и отвечу.....