一般问题:
如果有两个对象A
和B
,其中分别含有函数 f_A(arg list)
和 f_B(arg list)
。
创建一个包含由 f_A(...) 和 f_B(...) 组成的函数的对象 C,最好的方法是什么?
例如: f_C() = f_A() + f_B() 或 f_C() = f_A(f_B())
能否重载 "+" 运算符,以便我们可以像这样创建对象 C?
auto object_c = object_a + object_b
这是我的代码示例:
class GaussianKernel : public Kernel {
public:
GaussianKernel(double sigma) : m_sigma(sigma), m_scale(1) {}
double covarianceFunction(
double X,
double Y
)
{
double result;
result = m_scale * exp(-norm(X - Y) / (m_sigma*m_sigma));
return result;
}
GaussianKernel operator+(const GaussianKernel& b) {
/*Here I would like to overload the + operator such that
I can create a kernel from two others kernels,
I mean with a covariance function compound of the previous ones
*/
}
private:
double m_sigma;
double m_scale;
};
感谢您。
f_A() + f_B()
和f_A( f_B() )
是完全不同的东西,你想要哪一个? - 463035818_is_not_a_numberoperator+
,它们返回什么?在您的示例中,它是double
,这意味着您不必做任何额外的工作。 - 463035818_is_not_a_numbercovarianceFunction
是从Kernel
继承的虚函数吗? - sebrockm