arma :: vector错误与std :: vector

时间:2016-01-24 14:30:15

标签: c++ c++11 initializer-list armadillo overloading

在Cygwin上禁用了Armadillo的C ++ 11功能。但它适用于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

如何解决这种歧义?

1 个答案:

答案 0 :(得分:2)

创建接受std::initializer_list<double>

的ctor