Я ищу, чтобы создать конструктор по умолчанию для моего объекта в C++, который при вызове просто вызывает другой конструктор, но с фиксированными значениями.По умолчанию Constructor - отсрочка инициализации переменных-членов
Я смотрел на аналогичные проблемы: Are default constructors called automatically for member variables? и Explicitly defaulted constructors and initialisation of member variables , которые указывают, что, когда конструктор по умолчанию называется, Конструкторы по умолчанию переменных членов, если не оговорено особо, также называется.
Однако проблема заключается в том, что переменные-члены (из библиотеки ARMmbed), которые я использую, не имеют конструкторов по умолчанию, поэтому это не работает.
Есть ли способ «задержать» эту проблему, потому что в конструкторе, вызванном конструктором по умолчанию, все эти переменные-члены выделены, и все это работает - есть ли способ дать компилятору знать об этом?
Большое спасибо!
Код заголовка и реализации, который я использую ниже!
class Motor: public PwmOut
{
public:
//Constructor of 2 pins, and initial enable value
Motor(); //Default constructor
Motor(PinName dutyPin, PinName enable_pin, bool enable);
private:
bool enable; //Boolean value of enable
DigitalOut enablePin; //Digital out of enable value
};
Реализация:
/**
* Default constructor
**/
Motor::Motor() //I don't want to initialise member variables here
{
this = Motor::Motor(p23,p24,true); //As they are initialised in this constructor anyway?
}
/**
* Constructor for Motor class. Takes 1 PwmOut pin for PwmOut base class and 1 pin for DigitalOut enable
**/
Motor::Motor(PinName dutyPin, PinName enable_pin, bool enable):
PwmOut(dutyPin), enablePin(enable_pin)
{
//Logic in here - don't really want to duplicate to default constructor
}
Вы можете [делегат] (http://stackoverflow.com/questions/13961037/delegate-constructor-c) конструктор по умолчанию использовать параметризованный конструктор. – NathanOliver
Почему бы вам просто не присваивать значения по умолчанию второму конструктору и сделать конструктор по умолчанию закрытым? – user3528438
Я ценю, что мог бы это сделать, но a) Я действительно не хочу повторять логический код в другом конструкторе и b) Я хочу знать, теоретически, это можно сделать :) – davidhood2