Question regarding struct type definition in header files

Hi all,

I am working on writing a new block(class). This block generates 4
streams
of sinusoid at different frequencies and each sinusoid is multiplied
with
the 4 streams of float input respectively. The sinusoid are generated
by
defining two struct type variables and do something with these two
struct.
My question is, should I put the definition of these two struct in the
body
of class as a private member? or should I define them out side of the
class
parallel with smart pointer? (i.e. typedef
boost::shared_ptr<lpi_itersum_ff>
lpi_itersum_ff_sptr;). What’s the difference between puting the struct
definations inside and outside of the class?

Here’s my current brief .h file. I am not sure it’s acceptable or not.
If
you find anything might lead the problem, please let me know. Any
suggestions will be very much appreciated.

--------------------------------- header
file------------------------------------
#ifndef INCLUDED_lpi_itersum_FF_H
#define INCLUDED_lpi_itersum_FF_H

#define PI (3.141592654)
#define FREQLO 32.0 /* Low frequency (linear) /
#define FREQHI 10000.0 /
High frequency (linear) /
#define DOUTGAIN 10.0 /
Standard output gain */

#include <gr_sync_block.h>

class lpi_itersum_ff;
typedef boost::shared_ptr<lpi_itersum_ff> lpi_itersum_ff_sptr;

typedef struct _RES {
float dA;
float dB;
float dC;

float dOmega;
} RES;

typedef struct _SIG {
int nSampsPerSec;
int nCutOff;
float dOutputGain;
float dT;
RES RTx[4];
} SIG;

lpi_itersum_ff_sptr lpi_make_itersum_ff ();
static SIG sig;

class lpi_itersum_ff : public gr_sync_block
{
friend lpi_itersum_ff_sptr lpi_make_itersum_ff ();

lpi_itersum_ff(float *dAmps);

public:
~lpi_itersum_ff(void);
int work (int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items);
};

#endif

--------------------------------- header
file------------------------------------

Thank you,

Milo

On Mon, Aug 31, 2009 at 02:42:31PM -0700, Milo W. wrote:

definations inside and outside of the class?

Here’s my current brief .h file. I am not sure it’s acceptable or not. If
you find anything might lead the problem, please let me know. Any
suggestions will be very much appreciated.

Hi Milo,

The .h file should contain only what is required to allow the header
to be included, compiled and used by an “outside user” of the class
and nothing more.

This should compile if your header contains the necessary information:

// — start of foo.cc

#include <lpi_itersum_ff.h>

// — end of foo.cc

Eric