|
From: | Tom Rondeau |
Subject: | Re: [Discuss-gnuradio] MSVC v16 'static const' error |
Date: | Thu, 16 Oct 2014 09:59:27 -0400 |
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
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
[Prev in Thread] | Current Thread | [Next in Thread] |