Russian Qt Forum
Март 29, 2024, 17:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: c++ using  (Прочитано 3699 раз)
Azazello
Самовар
**
Offline Offline

Сообщений: 103


Просмотр профиля
« : Июнь 21, 2021, 16:01 »

class BaseClass {
public:
    Конструкторы,
    Консрукторы
    .........
    
   operator() =
   operator() =
};

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

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

Вопрос собственно - как "унаследовать" с помощью using оператор копирования. Раз уж конструктор копирования можно так использовать, то как оператор присваивания?
« Последнее редактирование: Июнь 23, 2021, 16:08 от Azazello » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Июнь 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;
}
 
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Июнь 23, 2021, 09:02 »

В обоих случаях: что должно происходить с членами которых нет у базового "A" ? Останутся  "как есть" (другого не видно)?. А если это контейнер, напр std::vector?
Записан
Azazello
Самовар
**
Offline Offline

Сообщений: 103


Просмотр профиля
« Ответ #3 : Июнь 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.
Спасибо за ответ конечно, я промоделирую вашу ситуацию для шаблонов...... (просто ; пропустил, в оригинале она есть).

Давайте попробую в своих шаблонах по нарастающей, и отвечу.....
« Последнее редактирование: Июнь 23, 2021, 16:13 от Azazello » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.124 секунд. Запросов: 22.