Описание тега inherited-constructors

4 ответа

Как объявить конструкторы в базовых классах, чтобы подклассы могли использовать их, не объявляя их?

Я хочу, чтобы подкласс использовал конструкторы своего родителя. Но, кажется, мне всегда нужно определять их снова в подклассе, чтобы это работало, вот так: public SubClass(int x, int y) : base (x, y) { //no code here } Поэтому мне интересно, правил…
4 ответа

C++0x унаследованный конструктор в шаблонах

Вот класс foo: template <typename T> struct foo { foo() { t = nullptr; } foo(T* p, bool flag) { t = p; } private: T* t; }; Вот класс бар: template <typename T> struct bar: public foo<T> { using foo<T>::foo<T>; }; Это пр…
2 ответа

Перегрузка унаследованных конструкторов

Дан следующий базовый класс: class Base { int a, b; public: Base(int a, int b=42): a(a), b(b) { } }; И класс, который является производным от базы: class Derived: public Base { using Base::Base; // inherit Base constructors bool c; public: Derived(i…
08 окт '18 в 16:42
2 ответа

Унаследованные конструкторы, конструктор по умолчанию и видимость

Как сказано в [namespace.udecl] / 18: [...] Объявление-использование, которое именует конструктор, не создает синоним; вместо этого дополнительные конструкторы доступны, если они были бы доступны при использовании для создания объекта соответствующе…
0 ответов

Конструктор с аргументами по умолчанию не может быть вызван при наследовании

Пожалуйста, посмотрите на код: struct X {}; struct Foo { Foo (int n = {}, int p = {}) {} }; struct Boo : Foo { using Foo::Foo; Boo (X n) {} }; И использование: Boo boo1; Сообщение об ошибке (GCC 5.2.1): error: no matching function for call to ‘Boo::…
17 дек '15 в 16:29
1 ответ

Унаследованная ошибка конструктора и контейнеров stl

Я играю с унаследованными конструкторами, однако у меня возникают проблемы с пониманием, почему gcc жалуется, когда я пытаюсь наследовать от std:: string. Я знаю, что это не лучшая практика, и ее следует избегать любой ценой, поэтому, прежде чем кри…
1 ответ

Каким образом порядок наследования в C++ влияет на конструктор?

Если я определяю структуру, которая наследуется от нескольких других структур, как порядок, в котором я перечисляю их, влияет на что-то вроде этого: struct D: C,B{ D(): B(), C(){...} }; Простой вопрос, но заранее спасибо!
21 сен '13 в 04:49
3 ответа

Нужен пример, показывающий, что конструктор по умолчанию не наследуется

Я знаю, что конструктор по умолчанию не наследуется, как указано в n3337. И там есть пример: struct B2 { B2(int = 13, int = 42); }; struct D2 : B2 { using B2::B2; }; С довольно хорошим объяснением: Набор кандидатов унаследованных конструкторов в D2 …
1 ответ

Наследование конструкторов и инициализаторов с фигурными или равными скобками

Я не понимаю, почему вы не можете скомпилировать класс, который имеет как член (не конструируемый по умолчанию) с инициализатором скобок или равно и унаследованный конструктор. G ++ говорит: test.cpp: 22: 15: ошибка: использование удаленной функции …
11 сен '15 в 14:15
2 ответа

Массив, не применимый для аргумента

Я хочу добавить гостя в массив гостей, вы, ребята, видите, что я делаю не так, или я не могу назвать строку, конструктор, конструктор? Ошибка говорит: the method addGuest(Guest) in the type table is not applicable for the argument ( String, Tea,Cake…
28 дек '12 в 12:27
3 ответа

Вызов конструктора аргументов базового класса 2 в конструктор с одним аргументом подкласса

Как говорит заголовок, у меня есть некоторые проблемы с вызовом конструктора базового класса в конструкторе подкласса База: account.h Account(double, Customer*) account.cpp Account::Account(double b, Customer *cu) { balance = b; cust = *cu; } Подкла…
1 ответ

Аргументы конструктора для виртуальных базовых классов

Рассмотрим следующий код: class A { int i; public: A(int index) : i(index) {} int get() { return i; } }; class B : virtual public A { public: using A::A; }; class C : virtual public A { public: using A::A; }; class D : public B, public C { public: D…
2 ответа

Следует ли копировать аргументы в унаследованные конструкторы при вызове базового ctor или нет?

Для следующей программы: #include <iostream> struct Foo { Foo() { std::cout << "Foo()\n"; } Foo(const Foo&) { std::cout << "Foo(const Foo&)\n"; } ~Foo() { std::cout << "~Foo()\n"; } }; struct A { A(Foo) {} }; struct B…
1 ответ

Конструктор Delphi как (наследовать создание Parent.Parent) или (вызвать Parent.Parent.Create)

Привет я пытаюсь вызвать parent.create родителей эффективно обходя parent.create вот пример unit InheritedTest; interface type IMyExample = interface ['{4B281573-99CC-4B9D-9895-F6BCD0E26F26}'] procedure Set_MyMessage(const Value: String); function G…
2 ответа

Печать атрибута экземпляра в списке, только если он существует

Я хочу напечатать атрибут класса, часть списка экземпляров, только если этот атрибут существует я создал имя класса Guitarist, которое включает атрибут name и другие элементы (обычно это словарь, в который пользователь может добавить дополнительные …
1 ответ

Есть ли еще одна ошибка компилятора gcc относительно унаследованных конструкторов?

Этот код не компилируется с использованием gcc HEAD 10.0.0 20190, но компилируется с использованием clang HEAD 9.0.0 #include <iostream> struct A { A() = default; A( int ) {} }; struct B { B() = default; B( const char * ) {} }; template <ty…
22 авг '19 в 17:36
2 ответа

Можно ли унаследовать конструкторы копирования / перемещения с помощью объявления-использования в с ++17?

struct B { B(int) {} B(B const&) {} }; struct D: B { using B::B; }; int main(void) { B b(5); D d(b); // error return 0; } C++14 явно исключает конструкторы копирования / перемещения из унаследованных конструкторов в 12.9 [class.inhctor]/p3. Для …
2 ответа

Как избавиться от синтаксической ошибки на токене «public» в основном классе?

Я получаю синтаксическую ошибку в своем основном классе, когда вызываю конструктор из другого класса, который мне нужен для запуска основной программы. Эта программа ориентирована на наследование и соответствующий вызов конструкторов и аргументов. Э…
0 ответов

Почему мы не можем напрямую вызвать конструктор базового класса?

Я попытался вызвать конструктор базового класса внутри конструктора конструктора производного класса. Он работал с конструктором по умолчанию, но конструктор с параметрами не работал. Вот мой код: class A { protected: int a; public: A() { a=1; cout&…
2 ответа

Как мы вызываем конструктор базового класса из производного класса, используя делегирующие конструкторы

Я знаю, и я прочитал много потоков, чтобы вызвать конструктор базового класса из производного класса, но я хотел реализовать его с помощью конструкторов делегирования Вот мой код Ошибка указывает «Делегирующий конструктор не может иметь других мем-и…