【发布时间】:2014-04-09 15:20:26
【问题描述】:
这是我的问题。
我有一个带有纯虚函数 operator()() 的模板抽象类 RandomVariable
template<T>
class RandomVariable<T> {
public:
virtual T operator()() = 0;
/* other stuff */
protected:
T value;
}
我还有一个带有纯虚函数operator()()的模板抽象类Process
template<T>
class Process<T> {
public:
typedef std::pair<double, T> state;
typedef std::list<state> result_type;
virtual result_type operator()() = 0;
/* other stuff */
protected:
result_type trajectory;
}
我可以轻松编写一个方法,返回生成路径并返回轨迹的最后一个值。
T GenerateTerminalValue() {
this->operator()();
return value.back().second;
};
但是,如果不是返回类型 T,我的函数实际上返回一个函子(理想情况下从 RandomVariable 派生),其中重载的 operator() 生成路径并返回轨迹的最后一个值,那会好得多。我的最佳尝试只导致了分段错误。
有什么好的方法可以做到这一点?谢谢。
【问题讨论】:
-
“我的最佳尝试只导致了分段错误”。我正在寻找错误,但我的魔法水晶今天不太好用。
标签: c++ templates polymorphism functor