【发布时间】:2015-04-05 11:53:42
【问题描述】:
有没有办法在犰狳线性代数库的矩阵中使用用户定义的标量类型?
即使int64_t 类型也不起作用。
这个简单的声明arma::Mat<int64_t> mat; 会产生编译错误:
armadillo_bits\arma_static_check.hpp(23):错误 C2118:否定 下标 armadillo_bits\arma_static_check.hpp(21) :编译时 类模板成员函数'void arma::arma_type_check_cxx1998::apply(void)' armadillo_bits\mat_meat.hpp(34) :参见函数模板的参考 实例化 'void arma::arma_type_check_cxx1998::apply(void)' 正在编译 armadillo_bits\mat_meat.hpp(34) :参见参考 类模板实例化 'arma::arma_type_check_cxx1998' 正在编译 armadillo_bits\mat_meat.hpp(17) :在编译类时 模板成员函数'arma::Mat::~Mat(void)' main.cpp(156) :参见函数模板实例化的参考 'arma::Mat::~Mat(void)' 正在编译 main.cpp(156):见 对类模板实例化“arma::Mat”的引用 编译
我需要具有这种自定义类型的矩阵,而不是用于数学运算,而只是用于方便的二维数组和插入行/列操作,我不想为这些操作链接另一个库。我的项目中已经使用了犰狳。
【问题讨论】:
-
要启用 64 位整数,请使用 C++11 编译器,或在包含犰狳头文件之前定义
ARMA_64BIT_WORD。否则,手动编辑include/armadillo_bits/config.hpp。 documentation 中列出了选项的说明。 -
谢谢,但是如何使用用户定义的类呢?像 arma::Mat
mat;
标签: c++ matrix linear-algebra armadillo