arma::vector 误认为 std::vector
arma::vector mistaken with std::vector
Armadillo 的 C++11 功能在 Cygwin 上被禁用。但它适用于 Linux.
我希望我的代码是跨平台的。
最初:
// constructor
MyClass(arma::vec x)
{
init(x);
}
当我向它传递一个数组时,它不起作用,因为 Cygwin 上没有启用 Armadillo 的 C++11 选项:
MyClass a({1.0,2.0,3.0});
在Linux.
下运行时会导致Cygwin出错
为了解决这个问题,我通过添加另一个构造函数修改了代码:
// constructor
MyClass(arma::vec x)
{
init(x);
}
// constructor
MyClass(std::vector<double> x)
{
arma::vec x2;
for(auto d:x)
x2<d;
init(x2);
}
现在,此代码在 Cygwin 上运行良好,但在 Linux 中会导致错误。
MyClass a({1.0,2.0,3.0});
error: call of overloaded ... is ambiguous
如何解决这个歧义?
创建接受 std::initializer_list<double>
的构造函数
Armadillo 的 C++11 功能在 Cygwin 上被禁用。但它适用于 Linux.
我希望我的代码是跨平台的。
最初:
// constructor
MyClass(arma::vec x)
{
init(x);
}
当我向它传递一个数组时,它不起作用,因为 Cygwin 上没有启用 Armadillo 的 C++11 选项:
MyClass a({1.0,2.0,3.0});
在Linux.
下运行时会导致Cygwin出错为了解决这个问题,我通过添加另一个构造函数修改了代码:
// constructor
MyClass(arma::vec x)
{
init(x);
}
// constructor
MyClass(std::vector<double> x)
{
arma::vec x2;
for(auto d:x)
x2<d;
init(x2);
}
现在,此代码在 Cygwin 上运行良好,但在 Linux 中会导致错误。
MyClass a({1.0,2.0,3.0});
error: call of overloaded ... is ambiguous
如何解决这个歧义?
创建接受 std::initializer_list<double>