daniel gratzer
daniel gratzer

Reputation: 53901

Object Construction in C++

I am working on a small project in C++ that requires me to create an object of a custom class I wrote in another one of my classes. The class is called FIRFilterModule, It has a simple blank constructor.

Being of a java background, my impulse is to create it like this:

class SensorInput{
public:

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

However this compiles with the ever so helpful error message of "Error within this context". I'm a little lost why that doesn't work. Increasing my confusion I changed the code to this:

class SensorInput{
public:

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

It works.

Can someone help me understand why this is so?

Upvotes: 1

Views: 156

Answers (2)

JaredPar
JaredPar

Reputation: 755387

In this particular case, running of the default constructor for a member field, you don't have to do anything. The constructor is run automatically. So you can just write

class SensorInput{
public:

  FIRFilterModule firFilter;

  SensorInput() { ... }
};

The member initialization list is only needed when you need to call a constructor which has arguments or initialize POD types. For example say the FIRFilterModule had a constructor which took an int. Then you would use the memeber initialization list

SensorInput() : firFilter(42) { ... }

Upvotes: 6

Luchian Grigore
Luchian Grigore

Reputation: 258648

The code you posted is correct.

Maybe you forgot to include the header where FIRFilterModule is declared.

Otherwise, everything should work.

Upvotes: 1

Related Questions