从c ++中的函数获取输出

时间:2015-06-22 08:06:03

标签: c++ armadillo

我在c ++中使用armadillo编写了以下代码。但是,我无法获得任何输出(我的输出是cordX和cordY)。我的定义是否有问题导致它无法提供任何输出?

#include <iostream>
#include<armadillo>

using namespace std;
using namespace arma;

void myOrder(const mat &sOut, const mat &T, const mat &OL, mat &cordX, mat &cordY);

int main()
{
    mat sOut;
    sOut << 100 << 120 << endr;

    mat T;
    T << 20 << 20 << endr;

    mat OL;
    OL << 5 << 5 << endr;

    mat locX;
    mat locY;

    myOrder(sOut, T, OL, locX, locY);

    cout << locX << endl;
    cout << locY << endl;

    system("PAUSE");
    return 0;
}

void myOrder(const mat &sOut, const mat &T, const mat &OL, mat &cordX, mat &cordY)
{
    vector<double> U;
    for (int i = 0; i < sOut(0) - T(0); i += T(0) - OL(0))
    {
        U.push_back(double(i));
    }


    vector<double> V;
    for (int j = 0; j < sOut(1) - T(1); j += T(1) - OL(1))
    {
        V.push_back(double(j));
    }


    if ((double(U.back()) + 2*T(0) - OL(0) - 1) > sOut(0) && (double(U.back()) + T(0) !=sOut(0)))
    {
        U.push_back(sOut(0) - T(0) + 1);
    }
    colvec cordX = conv_to< colvec >::from(U);



    if ((double(V.back()) + 2*T(1) - OL(1) - 1) > sOut(1) && (double(V.back()) + T(1) !=sOut(1)))
    {
        V.push_back(sOut(1) - T(1) + 1);
    }
    colvec cordY = conv_to< colvec >::from(V);

    // return cordX, cordY;
}

2 个答案:

答案 0 :(得分:1)

声明局部变量,其名称与函数cordXcordY的两个参数同名。在本地声明它们阴影参数,因此参数将不再可用。启用更多警告的构建应该让编译器为您提供有关此警告。

我假设您打算分配参数,而不是创建两个新变量。

答案 1 :(得分:-1)

Myorder函数堆栈将结果存储到局部变量cordX而不是引用locX。

  1. colvec cordX = conv_to&lt; colvec&gt; :: from(U);
  2. 所以这个locX是NULL。

    您可以分别对CordY

    执行此操作

    cordX = conv_to&lt; colvec&gt; :: from(U);