Построение объектов в C ++ - PullRequest
       1

Построение объектов в C ++

1 голос
/ 09 февраля 2012

Я работаю над небольшим проектом на C ++, который требует от меня создания объекта собственного класса, который я написал в другом из моих классов. Класс называется FIRFilterModule. Он имеет простой пустой конструктор.

Будучи Java-фоном, я хочу создать его следующим образом:

class SensorInput{
public:

  FIRFilterModule firFilter;
  ...More Class Members...
  SensorInput():firFilter(FIRFilterModule()){}
...};

Однако это компилируется с очень полезным сообщением об ошибке «Ошибка в этом контексте». Я немного растерялся, почему это не работает. Из-за растерянности я изменил код так:

class SensorInput{
public:

  FIRFilterModule firFilter;
  ...More Class Members...
  SensorInput(){}
...};

Работает.

Может кто-нибудь помочь мне понять, почему это так?

Ответы [ 2 ]

6 голосов
/ 09 февраля 2012

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

class SensorInput{
public:

  FIRFilterModule firFilter;

  SensorInput() { ... }
};

Список инициализации членов необходим только тогда, когда вам нужно вызвать конструктор, который имеет аргументы или инициализировать типы POD.Например, скажем, у FIRFilterModule был конструктор, который занял int.Тогда вы бы использовали список инициализации memeber

SensorInput() : firFilter(42) { ... }
1 голос
/ 09 февраля 2012

Код, который вы опубликовали, верен.

Возможно, вы забыли включить заголовок, в котором объявлено FIRFilterModule.

В противном случае все должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...