尝试在模板化构造函数中转换参数时,我遇到了一个奇怪的编译器错误。这是一个最小的例子:
site_downloads
错误是:
#include <Eigen/Dense>
class Plane
{
public:
template <typename TVector>
Plane(const TVector& coefficients) {
coefficients.cast<double>(); // compiler error on this line
}
// This compiles fine
// Plane(const Eigen::Vector3d& coefficients) {
// coefficients.cast<double>();
// }
};
int main(){return 0;}
由于这个类从未实例化(expected primary-expression before 'double'
expected ';' before 'double'
为空),我认为编译器甚至根本看不到函数模板,所以我很困惑这个错误是怎么回事表达
答案 0 :(得分:2)
您必须使用template
关键字:
template <typename TVector>
Plane(const TVector& coefficients) {
coefficients.template cast<double>();
}