我在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;
}
答案 0 :(得分:1)
声明局部变量,其名称与函数cordX
和cordY
的两个参数同名。在本地声明它们阴影参数,因此参数将不再可用。启用更多警告的构建应该让编译器为您提供有关此警告。
我假设您打算分配参数,而不是创建两个新变量。
答案 1 :(得分:-1)
Myorder函数堆栈将结果存储到局部变量cordX而不是引用locX。
所以这个locX是NULL。
您可以分别对CordY
执行此操作cordX = conv_to&lt; colvec&gt; :: from(U);