gpt4 book ai didi

c++ - 特征矩阵作为函数的默认参数

转载 作者:太空宇宙 更新时间:2023-11-04 11:26:56 25 4
gpt4 key购买 nike

我知道一个事实,如果我想创建一个可能需要或可能不需要接受 Eigen 动态双矩阵的函数,我需要定义一个空的动态矩阵,比如说,在定义函数头之前的某个地方。

文件.h

Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> EMPTY(0,0);

void myFunction(Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>& inputMatrix);
void myFunction(Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>& inputMatrix=EMPTY);

文件.cpp

void myFunction(Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>& inputMatrix) {
// do something
}

但实际情况是,我目前正在使用一个模板化类,并且此类中的一个函数有一个特征矩阵作为可选参数。像这样的……

我的类.h

template<typename Number>
class myClass {
void myFunction(Eigen::Matrix<Number, Eigen::Dynamic, Eigen::Dynamic>& inputMatrix);
};

#include "myClass.tpp"

我已将此模板化类的实现包含在一个单独的 tpp 文件中,因此我希望可以有多个函数声明。在这种情况下,我怎样才能使我的 inputMatrix 成为可选参数?我试图在类定义上方声明空矩阵,但我需要模板类型名才能使其工作。

最佳答案

对于这种情况,您最好创建两个方法。一个带有真实参数,一个没有参数,其中包含参数化调用。像这样:

template<typename Number>
class myClass {
void myFunction(Eigen::Matrix<Number, Eigen::Dynamic, Eigen::Dynamic>& inputMatrix);
void myFunction()
{
myFunction(EMPTY);
}
};

通常,重载方法更容易理解和维护。

关于c++ - 特征矩阵作为函数的默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26347950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com