[英]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;
}
您可以使用与函数的两个参数cordX
和cordY
相同的名称声明局部变量。 在本地声明它们会影响参数,因此您将无法再使用这些参数。 启用更多警告的构建应该会导致编译器向您发出有关此的警告。
我假设您打算分配给参数,而不是创建两个新变量。
Myorder 函数堆栈将结果存储到局部变量cordX 而不是对locX 的引用。
所以这个locX是NULL。
您可以分别对 CordY 执行此操作
cordX = conv_to<colvec>::from(U);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.