C++ 错误:函数返回函数

C++ 错误:函数返回函数,c++,boost,boost-signals,C++,Boost,Boost Signals,虽然至少有,但我还是问我的问题,因为那个问题还没有解决,而且看起来更复杂。我正在努力简化我的 我有一个使用.h的.cpp文件,如下所示,编译这些sheds错误如下。任何想法都值得赞赏。请注意,简化代码是为了尽可能少地只显示有问题的部分 FC_boost_prove.h: #ifndef FC_H #define FC_H #include <vector> #include "iostream" #include "boost/signal.hpp" #include "boos

虽然至少有,但我还是问我的问题,因为那个问题还没有解决,而且看起来更复杂。我正在努力简化我的

我有一个使用.h的.cpp文件,如下所示,编译这些sheds错误如下。任何想法都值得赞赏。请注意,简化代码是为了尽可能少地只显示有问题的部分

FC_boost_prove.h:

#ifndef FC_H
#define FC_H

#include <vector>
#include "iostream"

#include "boost/signal.hpp"
#include "boost/bind.hpp"
#include <boost/random.hpp>

typedef boost::signal0<void()> PreUpdateSignal;
typedef PreUpdateSignal::slot_function_type PreUpdateSlot;
typedef boost::signal0<void()> PostUpdateSignal;
typedef PostUpdateSignal::slot_function_type PostUpdateSlot;

class FC {
public:
    FC(uint width, uint height) {
        std::cout << "In constructor." << std::endl;
    }
    ~FC() {
        //Do ...
    }
    void connectPreUpdate(PreUpdateSlot s) {
        preUpdateSignal_.connect(s);
    }
    void connectPostUpdate(PostUpdateSlot s) {
        postUpdateSignal_.connect(s);
    }

protected:
    PreUpdateSignal preUpdateSignal_;
    PostUpdateSignal postUpdateSignal_;
};
#endif
\ifndef FC\u H
#定义FC_H
#包括
#包括“iostream”
#包括“增压/信号.hpp”
#包括“boost/bind.hpp”
#包括
typedef boost::信号0预更新信号;
typedef PreUpdateSignal::slot_function_type PreUpdateSlot;
typedef boost::signal0 positionpdatesignal;
typedef positionpdatesignal::slot_function_type positionpdateslot;
FC类{
公众:
FC(单元宽度、单元高度){

std::cout为什么要指定
boost::signal0
?signalN模板用于无法正确解析函数签名的缺陷编译器

按照现代编译器的建议,使用信号并指定函数签名:

typedef boost::signal<void()> PreUpdateSignal;
typedef boost::signal<void()> PostUpdateSignal;
typedef boost::signal0<void> PreUpdateSignal;
typedef boost::signal0<void> PostUpdateSignal;
typedef boost::信号预更新信号;
类型DEF boost::信号姿势更新信号;
或者使用signalN并显式指定返回类型(以及每个参数类型),如有缺陷的编译器所需:

typedef boost::signal<void()> PreUpdateSignal;
typedef boost::signal<void()> PostUpdateSignal;
typedef boost::signal0<void> PreUpdateSignal;
typedef boost::signal0<void> PostUpdateSignal;
typedef boost::signal0预更新信号;
typedef boost::signal0 positionpdatesignal;

谢谢。我现在已经编译好代码并开始工作了。实际上eclipse仍然显示为错误,所以我不得不使用commanline的g++(不过这是另一个故事)。