Комплексная инициализация в классе в c ++ типа 'complex <double>' не предоставляет оператор вызова - PullRequest
0 голосов
/ 23 октября 2019

Привет! В настоящее время я пытался инициализировать комплексное число в классе

class complex_class{

    public:

        complex<double> mycomplex;

        complex_class(double real, double img){

            //mycomplex(real, img);
            mycomplex.real(real);
            mycomplex.imag(img);

        }

};

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

ошибка: тип 'complex' делаетне предоставлять оператор вызова mycomplex (real, img);

он работает только с функциями real и imag

Поэтому я хотел бы спросить вас, ребята, что я сделал не так и что я не сделалне понял.

спасибо за чтение и помощь

1 Ответ

2 голосов
/ 23 октября 2019

Переменные-члены создаются и инициализируются до вызова тела конструктора.

Если вы хотите инициализировать переменную-член как часть инициализации объекта, вам нужно сделать это до вызова тела конструктора, идля этого вам нужно использовать список инициализатора конструктора .

что-то вроде

complex_class(double real, double img)
    : mycomplex(real, img)   // Initialize the mycomplex object through its constructor
{
    // Empty, as mycomplex already is initialized
}
...