繁体   English   中英

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

[英]getting output from a function in c++

我在 C++ 中使用犰狳编写了以下代码。 但是,我无法获得任何输出(我的输出是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;
}

您可以使用与函数的两个参数cordXcordY相同的名称声明局部变量。 在本地声明它们会影响参数,因此您将无法再使用这些参数。 启用更多警告的构建应该会导致编译器向您发出有关此的警告。

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

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

  1. colveccordX = conv_to<colvec>::from(U);

所以这个locX是NULL。

您可以分别对 CordY 执行此操作

cordX = conv_to<colvec>::from(U);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM