2015-08-16 6 views
0

В настоящее время я пытаюсь использовать Boost :: аккумуляторы, но получаю ошибку компиляции при инициализации в конструкторе. Пожалуйста, ознакомьтесь с информацией о классе ниже.Boost :: инициализация аккумуляторов не работает на Mac OSX Yosemite

Environment: 
Mac OSX Yosemite 
G++ version: 
4.2.1 
Boot Version: 1.55 

Код:

class test 
{ 
    public: 
     test(); 
     test(unsigned char windowSize=5): acc(tag::rolling_window::window_size=windowSize){} 
    protected: 
     accumulator_set<unsigned short, stats<tag::rolling_mean > > acc; 
    private: 
}; 

Ошибка:

/usr/local/boost/include/boost/accumulators/statistics/rolling_window.hpp|49|error: no viable overloaded operator[] for type 'const boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::accumulators::tag::accumulator, boost::accumulators::accumulator_set<unsigned short, boost::accumulators::stats<boost::accumulators::tag::rolling_mean, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, void> >, boost::parameter::aux::empty_arg_list>'| 

----------- 
/usr/local/boost/include/boost/parameter/aux_/arg_list.hpp|346|note: candidate function not viable: no known conversion from 'keyword<tag::rolling_window_size>' to 'const keyword<key_type>' for 1st argument| 
------------------- 

ответ

0

Вы можете не хватаете некоторых включают в себя, что приводит к неполным типам в инициализаторе ET:

Live On Coliru

#include <boost/accumulators/accumulators.hpp> 
#include <boost/accumulators/statistics.hpp> 
#include <boost/accumulators/statistics/rolling_window.hpp> 
#include <boost/accumulators/statistics/rolling_mean.hpp> 
#include <iostream> 

namespace ba = boost::accumulators; 

class test 
{ 
    public: 
     test(); 
     test(unsigned char windowSize=5): acc(ba::tag::rolling_window::window_size = windowSize){} 
    protected: 
     ba::accumulator_set<unsigned short, ba::stats<ba::tag::rolling_mean > > acc; 
    private: 
}; 

int main() 
{ 
} 
0

Благодарим за сообщение. Я уже включил все необходимые файлы, но похоже, что причиной этого могут быть перегруженные конструкторы. Я удалил все конструкторы и сохранил только один список инициализации, и он начал работать. Еще раз спасибо.

Код:

#include <boost/accumulators/accumulators.hpp> 
#include <boost/accumulators/statistics.hpp> 
#include <boost/accumulators/statistics/rolling_window.hpp> 
#include <boost/accumulators/statistics/rolling_mean.hpp> 
#include <iostream> 
namespace ba = boost::accumulators; 

class test 
{ 
public: 
    test(unsigned char windowSize=5):   acc(ba::tag::rolling_window::window_size = windowSize){} 
protected: 
    ba::accumulator_set<unsigned short, ba::stats<ba::tag::rolling_mean > > acc; 
private: 
};