C++ c++;将非模板特征向量作为函数参数传递并在函数中修改
我正在实现派生类的函数成员(在基类中声明为virtual)。其中一个参数是vectorXd,它是存储操作结果的位置 我读过“以特征类型为参数编写函数”(Writing Functions Taking Eigen Types as Parameters)(),他们的技巧依赖于模板化函数,将重点放在一个通用特征对象上作为可能的参数。在我的情况下,我认为它不会起作用,因为它似乎不能混合虚拟和模板 另一方面,我知道我的参数始终是VectorXd类型,我甚至可以在进入函数之前将其调整到正确的大小,以便在函数内部不需要调整大小。我正在尝试通过引用将向量作为常量传递,并使用const_cast来进行所需的修改,但仍然会出现链接错误: 错误LNK2001:未解析的外部符号“public:virtual void\uu thiscall problem::f(类方法*,类特征::矩阵常数&,类特征::矩阵常数&)”(?f@problem@@UAEXPAVmethod@@ABV$Matrix@N$0-0$00$0A@$0-0$00@Eigen@@1@Z) 这里,“problem”是基类,“f”是函数,“method”是另一个类(我的函数中也需要这种类型的对象) 在问题的定义中,我有:C++ c++;将非模板特征向量作为函数参数传递并在函数中修改,c++,parameter-passing,eigen3,C++,Parameter Passing,Eigen3,我正在实现派生类的函数成员(在基类中声明为virtual)。其中一个参数是vectorXd,它是存储操作结果的位置 我读过“以特征类型为参数编写函数”(Writing Functions Taking Eigen Types as Parameters)(),他们的技巧依赖于模板化函数,将重点放在一个通用特征对象上作为可能的参数。在我的情况下,我认为它不会起作用,因为它似乎不能混合虚拟和模板 另一方面,我知道我的参数始终是VectorXd类型,我甚至可以在进入函数之前将其调整到正确的大小,以便在
virtual void f(method *m, const Eigen::VectorXd &x, Eigen::VectorXd const &y);
void f(method *m, const Eigen::VectorXd &x, Eigen::VectorXd const &y) {...};
在衍生问题的定义中,我有:
virtual void f(method *m, const Eigen::VectorXd &x, Eigen::VectorXd const &y);
void f(method *m, const Eigen::VectorXd &x, Eigen::VectorXd const &y) {...};
“y”是我需要存储结果的位置。对如何实现这一目标有何建议?
感谢使用advanced。如果您的基类是抽象的,请将该方法设置为
=0
,并使用纯虚拟的
如果基类不是抽象的,则可能不需要该方法。不要将其包含在基类中
如果基类不是抽象的,但您需要能够在基类的每个实例以及派生的实例上执行该操作,那么您需要在基类以及派生的实例中实现该函数。谢谢,我缺少“=0”。我使用派生类来实现f,但是我在调用f的函数中传递了一个指向基类的指针。