【发布时间】:2016-02-15 18:44:16
【问题描述】:
我正在尝试转发声明boost信号,所以在不使用信号时我不需要包含头文件。
我认为这会起作用:
namespace boost
{
namespace signals2
{
class signal<void()>;
}
}
但得到错误“信号不是模板”
有没有办法做到这一点?
编辑: 更多信息:我正在尝试做的一个例子,主要是保留 #include 在我的大部分代码库中。
#include <memory>
/// Forward declaration here:
/// .H File
class ExampleClass
{
public:
boost::signals2::signal<void()> & GetSignal();
protected:
std::shared_ptr<boost::signals2::signal<void()>> _signal_pointer;
};
.CPP
#include "boost/signals2.hpp"
boost::signals2::signal<void()> & ExampleClass::GetSignal()
{
if (!_signal_pointer)
{
_signal_pointer.reset(new boost::signals2::signal<void()>());
}
return *_signal_pointer;
}
【问题讨论】:
-
看起来有点棘手。我想要这样做的原因是,我想要一个类,当通过标题要求提供信号时,作为参考,它可以做到。否则,我不想在使用它的许多其他类上使用数千行代码来减慢我的编译时间。