Описание тега delegating-constructor
A delegating constructor is a C++11 feature that allows a class constructor to delegate to another of its constructors in its initializer-list, much like it can call base class constructors.
1
ответ
Ошибка: выражение не может быть использовано как функция
Я новичок в lambdas, я сделал свой собственный класс двоичной кучи с пользовательской функцией компаратора. Все шло хорошо, пока я не получил ошибку компиляции, и я не знаю, как исправить. Я попытался немного изменить мою строку кода вместо this(cap…
29 янв '19 в 02:24
1
ответ
C++: могу ли я выполнить некоторую обработку перед вызовом другого конструктора?
У меня есть класс с двумя конструкторами. class Foo { Foo(B b) {... } Foo(int n) : Foo(buildBFromInt(n)) {} ?? } Первый берет некоторый объект, и я хотел бы иметь второй, который сначала создает объект из более простого типа. Это возможно?
04 авг '15 в 01:18
2
ответа
Сбой в конструкторе с использованием виртуального наследования и делегирования конструкторов
struct D { virtual void m() const = 0; }; struct D1 : public virtual D { }; struct D2 : public virtual D { }; struct B : public D2 { B() { } B(int val) : B() { } void m() const { } }; struct A : public B, public D1 { A() : B(0) { } }; int main() { A…
27 сен '14 в 13:22
2
ответа
Делегированный конструктор копирования и инициализация константных данных
У меня есть класс A с большим количеством членов данных, некоторые из которых являются постоянными. Все члены данных имеют надлежащие конструкторы копирования, поэтому я хочу по умолчанию использовать конструктор копирования моего класса: class A { …
01 авг '17 в 08:38
2
ответа
Значение аргумента по умолчанию основано на других
Я хочу получить такой класс: class A{ int a; int b; int c; A():a(),b(),c(){}; A(int ia,int ib,int ic=ia+ib):a(ia),b(ib),c(ic){}; //this is what i need }; Я хочу, чтобы значение ic по умолчанию было рассчитано на основе ia и ib, код здесь получит оши…
27 сен '13 в 05:47
4
ответа
Как переслать перегруженный вызов конструктора другому конструктору в C++/CLI
Я знаю, что нет никакого способа сделать это в чистом C++, но мне было интересно, можно ли вызвать конструктор из списка инициализации другого конструктора в C++/CLI, так же, как это можно сделать в C#. Пример: ref class Foo { Foo() {} Foo(int i) : …
01 мар '10 в 16:00
1
ответ
Расширение прямого вызова MSVC
В этом ответе tloveless указал, что в MSVC возможно использовать this->foo::foo(42); для делегирования конструктора для непосредственного вызова конструктора: #include <iostream> struct foo { int m; foo(int p) : m(p) { std::cout << "f…
28 апр '14 в 17:26
1
ответ
Конструктор делегирует себя в g++ и clang++
Рассмотрим следующую программу. Я случайно ошибся в этом. struct T { int s; T() : T() { s=9; } }; int main() { T t; } Приведенный выше код компилируется и отлично работает в некоторых версиях g ++, таких как g++ 4.8.1 (см. Демонстрационную версию зд…
20 июл '16 в 16:42
1
ответ
Делегирующий конструктор C++ со списком инициализации. Какие из них происходят?
Я посмотрел на очень похожий вопрос, но я не совсем уверен, что понимаю ответ. Если я делегирую конструктор, какие инициализации из списков инициализации происходят? Пример: MyClass::MyClass(int a, int b) : MyClass(a, b, NULL), int1(a), int2(b), pOt…
19 фев '14 в 16:27
3
ответа
Делегирование конструктора C++11 с агрегатной инициализацией
Можно ли вызвать агрегатную инициализацию в моем собственном определении ctor по умолчанию? GCC жалуется на "ошибку: конструктор делегирует себя" с кодом ниже: struct X { int x, y, z, p, q, r; X(): x{}, y{}, z{}, p{}, q{}, r{} { } // cumbersome //X(…
02 июн '16 в 13:22
3
ответа
Переинициализировать с помощью делегирующего конструктора
У меня есть этот класс X, используя делегирующий конструктор, я хочу изменить только значение i а также j как 0. Можно ли это сделать? class X{ public: X() = default; X(int ival, int jval) : i{ ival }, j{ jval } {} X(int new_i) : i{ new_i }, X(i, 0)…
27 фев '15 в 19:16
2
ответа
Шаблонные занятия - пара вопросов
Мне нужно создать конструктор с двумя целыми числами в качестве аргументов.Оттуда мне нужно вызвать метод, взяв эти целые числа по ссылке. Внутри этого метода я должен динамически преобразовывать целые числа в char* тип (массив цифр). В конце констр…
13 апр '13 в 13:18
3
ответа
Являются ли делегированные C++11 ctors хуже, чем C++03 ctors, вызывающие функции init?
[этот вопрос был сильно отредактирован; простите, я переместил изменения в ответ ниже] Из Википедии (включая статью) на C++11: Эта [ новая функция делегирующих конструкторов ] поставляется с оговоркой: C++03 считает, что объект должен быть построен,…
14 окт '15 в 02:50
2
ответа
Вызов конструктора с фигурными скобками вместо паратезов
Недавно я понял, что в C++11 мы можем вызвать делегирующий конструктор списка инициализатора, например Foo() : Foo{42} // delegate to Foo(initializer_list<>) Этот синтаксис правильный? Вроде бы, хотя я бы ожидал всегда использовать круглые ско…
21 апр '15 в 23:51
3
ответа
C++: выбор `const char *` vs `std::string` при использовании делегирующего конструктора
Учтите следующее: class Foo { public: Foo (const char *in) { printf ("C string constructor called\n"); } Foo (std::string const &in) : Foo(in.c_str()) { printf ("C++ string constructor called\n"); } }; Foo bar ("I never asked for this"); //C str…
20 июн '18 в 14:54
2
ответа
Нет подходящей функции в множественном наследовании
Я новичок в наследовании в C++ и решил попробовать несколько экспериментов, чтобы узнать об этом предмете. Код ниже показывает иерархию классов, которые я создаю: classes.h class base { protected: int _a; int _b; int _c;; base(int b, int c); }; clas…
15 ноя '16 в 05:02
3
ответа
Как обрабатывать конструкторы, которые должны получать несколько ресурсов безопасным способом
У меня нетривиальный тип, который владеет несколькими ресурсами. Как мне сконструировать это безопасным способом? Например, вот демо-класс X который содержит массив A: #include "A.h" class X { unsigned size_ = 0; A* data_ = nullptr; public: ~X() { f…
05 авг '16 в 03:26
1
ответ
В чем разница между делегированием конструкторов в списке инициализатора члена и в теле конструкторов
Конструкторы из C++11 позволяют нам создавать цепочки конструкторов. Например, мы можем закодировать это: Class Foo { public: Foo() { } Foo(int n): Foo() { } }; Я попытался делегировать Foo() как в списке инициализации члена, так и в теле кода. Я по…
13 май '18 в 15:48
2
ответа
Делегирующий конструктор дает ошибку сегментации при использовании поля класса для аргумента
На самом деле ошибка сегментации происходит в другой программе, которую я пытался скомпилировать, что происходит из-за этого поведения. Мой вопрос: Это ошибка или моя вина? Воспроизводится любым способом (даже если something поле является закрытым и…
24 дек '17 в 17:12
1
ответ
Могу ли я использовать "это" с делегирующими конструкторами?
В C++11 появилась возможность делегировать конструкцию от одного конструктора другому - "делегирование конструкторов". Но - при этом мы можем использовать указатель this? например, в качестве аргумента одному из конструкторов, которому мы делегируем…
22 июл '19 в 00:22