I just got this error from MSVC v16 while trying to compile
atsc_sync_impl.cc:
g:\gv\dx-radio\gnuradio-3.x\gr-dtv\lib\atsc\atsc_sync_impl.h(37) :
error C2864: ‘gr::dtv::atsc_sync_impl::LOOP_FILTER_TAP’ : only static
const
integral data members can be initialized within a class
g:\gv\dx-radio\gnuradio-3.x\gr-dtv\lib\atsc\atsc_sync_impl.h(38) :
error C2864: ‘gr::dtv::atsc_sync_impl::ADJUSTMENT_GAIN’ : only static
const
integral data members can be initialized within a class
The code works fine with g++ 4.7.2. I figured these ‘private const data’
had to be initialised in the .cc-file. Here is how I patched it:
— atsc_sync_impl.cc.orig 2014-08-18 22:46:57 +0000
+++ atsc_sync_impl.cc 2014-10-15 19:14:01 +0000
@@ -31,6 +31,9 @@
namespace gr {
namespace dtv {
- const double atsc_sync_impl::LOOP_FILTER_TAP = 0.0005; //
0.0005 works - const double atsc_sync_impl::ADJUSTMENT_GAIN = 1.0e-5 / (10 *
ATSC_DATA_SEGMENT_LENGTH); - atsc_sync::sptr
atsc_sync::make(float rate)
{
— atsc_sync_impl.h.orig 2014-08-18 22:46:57 +0000
+++ ./atsc_sync_impl.h 2014-10-15 19:24:45 +0000
@@ -34,8 +34,8 @@
class atsc_sync_impl : public atsc_sync
{
private:
-
static const double LOOP_FILTER_TAP = 0.0005; // 0.0005 works
-
static const double ADJUSTMENT_GAIN = 1.0e-5 / (10 *
ATSC_DATA_SEGMENT_LENGTH);
-
static const double LOOP_FILTER_TAP; // = 0.0005
-
static const double ADJUSTMENT_GAIN; // = 1.0e-5 / (10 *
ATSC_DATA_SEGMENT_LENGTH);
static const int SYMBOL_INDEX_OFFSET = 3;
static const int MIN_SEG_LOCK_CORRELATION_VALUE = 5;
static const int SSI_MIN = -16;
–gv