我是switch (pressedKey.Key)
{
case ConsoleKey.LeftArrow:
{
PlayerX--;
if (PlayerX == -1)
PlayerX++;
}
break;
case ConsoleKey.RightArrow:
{
PlayerX++;
if(PlayerX == width-1)
PlayerX--;
}
break;
case ConsoleKey.UpArrow:
{
PlayerY--;
if (PlayerY == -1)
PlayerY++;
}
break;
case ConsoleKey.DownArrow:
{
PlayerY++;
if (PlayerY == height)
PlayerY--;
}
break;
case ConsoleKey.E:
runGame = false;
break;
}
的新人。我的eigen
形式的条目,我必须使用OpenCV
类,以便将它们转换为Map
形式。我写了以下代码:
eigen
我在行int main()
{
Mat label_data, train_data;
//some code
Eigen::Map<Eigen::Matrix<double, -1, -1, 1>> train_data_in_Eigen(train_data.ptr<double>(), train_data.rows, train_data.cols);
Eigen::Map<Eigen::Matrix<double, -1, -1, 1>>* pTrain_data_in_Eigen = &train_data_in_Eigen;
foo(train_labels, pTrain_data_in_Eigen);
//some code
}
void foo(std::vector<int> gnd, Eigen::Map<Eigen::Matrix<double, -1, -1, 1>>* pdata)
{
Eigen::Map<Eigen::Matrix<double, -1, -1, 1>> _data = *pdata;
auto meanOf_data = _data.colwise().mean();
_data.rowwise() -= meanOf_data;
//some code
}
中得到了Exception Error
:
_data.rowwise() -= meanOf_data;
。但是当我以这种方式写作时:Exception thrown at: Access violation reading location
我没有auto dd = _data.rowwise() -= meanOf_data
。什么问题?以及如何解决?
答案 0 :(得分:1)
由于auto
,meanOf_data
是一个引用死临时对象的表达式,而不是实际向量。阅读common pitfalls。解决方案:
RowVectorXd meanOf_data = _data.colwise().mean();
或:
auto meanOf_data = _data.colwise().mean().eval();