Как инициализировать объект с известными параметрами, который является членом класса в C ++? - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть следующий класс:

class Counter {
private:
    unsigned int count;
    unsigned int inc_by;

public:
    Counter(unsigned int count, unsigned int inc_by) : count(count), inc_by(inc_by) {}

    void increment() {
        count += inc_by;
    }
};

Я думаю, что есть другой класс Timer, в котором я хочу использовать объект Counter. Однако я хочу, чтобы каждый экземпляр Timer имел Counter закрытый член объекта, который инициализируется с известными параметрами. Я также не могу использовать динамическое выделение памяти c.

Я пробовал следующее:

class Timer {
private:
    Counter counter(0, 1);

public:
    Timer() {}
};

Это приводит к ошибке компилятора Function 'counter' is not implemented.

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Существует только два способа , которые можно инициализировать не статичными c членами данных.

Если вы хотите присвоить начальное значение члену, для которого он объявлен, вам нужно {}, например:

Counter counter {0, 1};

В противном случае вы можете определить начальное значение в члене список инициализатора конструктора Timer, например:

Timer() : counter(0,1) {}
1 голос
/ 26 апреля 2020

Запись

Counter counter { 0, 1 };

Вы можете использовать только так называемые фигурные скобки или равнозначные инициализаторы.

Или вы можете инициализировать элемент данных в конструкторе, например

Timer() : counter( 0, 1 ){}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...