C++ 本征C++;断言失败
我有一个特征矩阵xD对象,叫做v,当我试图访问这个矩阵内容时,我面临一些问题。当我只在控制台上打印内容(如代码中所示)时,效果也一样好。当我尝试使用内容时,会出现以下错误: 断言失败:(row>=0&&rowC++ 本征C++;断言失败,c++,matrix,matrix-multiplication,eigen,C++,Matrix,Matrix Multiplication,Eigen,我有一个特征矩阵xD对象,叫做v,当我试图访问这个矩阵内容时,我面临一些问题。当我只在控制台上打印内容(如代码中所示)时,效果也一样好。当我尝试使用内容时,会出现以下错误: 断言失败:(row>=0&&row=0&&colpt.y=(双)y; 此->pt.isValid=isValid; } 点getPoint() { 返回此->pt; } 点*getFlow() { 返回此->流; } void setFlow(双流和xFlow、双流和yFlow、内部和位置) { 此->流[位置].x=xFl
ChosenPoint**points=新的ChosenPoint*[宽度];
对于(int i=0;i
还有我的ChosenPoint课程:
typedef struct point
{
double x;
double y;
bool isValid;
} point;
class ChosenPoint
{
public:
ChosenPoint()
{
}
~ChosenPoint()
{
}
void setNumberOfFrames(int numberOfFrames)
{
this->flow = new point[numberOfFrames];
for (int i = 0; i < numberOfFrames; i++)
{
point f;
f.x = 0.0;
f.y = 0.0;
this->flow[i] = f;
}
}
void setPoint(int x, int y, bool isValid)
{
this->pt.x = (double) x;
this->pt.y = (double) y;
this->pt.isValid = isValid;
}
point getPoint()
{
return this->pt;
}
point* getFlow()
{
return this->flow;
}
void setFlow(double &xFlow, double &yFlow, int &position)
{
this->flow[position].x = xFlow;
this->flow[position].y = yFlow;
}
void updateFlow(int position)
{
this->flow[position].x = 2*this->flow[position].x;
this->flow[position].y = 2*this->flow[position].y;
}
void updateFlow(double xFlow, double yFlow, int position)
{
this->flow[position].x = xFlow;
this->flow[position].y = yFlow;
}
point pt;
point *flow;
typedef结构点
{
双x;
双y;
bool是有效的;
}点;
类选择点
{
公众:
ChosenPoint()
{
}
~ChosenPoint()
{
}
void setNumberOfFrames(int numberOfFrames)
{
此->流=新点[numberOfFrames];
for(int i=0;i流[i]=f;
}
}
无效设定点(整数x,整数y,布尔值有效)
{
这->pt.x=(双)x;
这->pt.y=(双)y;
此->pt.isValid=isValid;
}
点getPoint()
{
返回此->pt;
}
点*getFlow()
{
返回此->流;
}
void setFlow(双流和xFlow、双流和yFlow、内部和位置)
{
此->流[位置].x=xFlow;
此->流量[位置].y=yFlow;
}
void updateFlow(int位置)
{
此->流[位置].x=2*此->流[位置].x;
此->流[位置].y=2*此->流[位置].y;
}
void updateFlow(双xFlow、双yFlow、int位置)
{
此->流[位置].x=xFlow;
此->流量[位置].y=yFlow;
}
点pt;
点*流;
}) 是我的错。问题是我在项目中使用的另一个矩阵,我花了一段时间才弄明白。不幸的是,在这种情况下,Eigen似乎没有真正的帮助: 我有两个矩阵(A和B)。有问题的矩阵是A(不知何故,一些数据没有加载到矩阵中)。但当我将A和B相乘时,它生成了一个新的矩阵C,其中包含一些有效的结果(我所有的理智检查都是无用的)。我承认我对艾根了解不多
无论如何,希望这对更多像我这样的人有帮助 如果我给点[p],你的问题可能与
点有关。setArray(0.0,0.0)或任何其他双精度,也同样适用。错误指向了艾根的某个东西,不是吗?你能提供一个答案吗?
typedef struct point
{
double x;
double y;
bool isValid;
} point;
class ChosenPoint
{
public:
ChosenPoint()
{
}
~ChosenPoint()
{
}
void setNumberOfFrames(int numberOfFrames)
{
this->flow = new point[numberOfFrames];
for (int i = 0; i < numberOfFrames; i++)
{
point f;
f.x = 0.0;
f.y = 0.0;
this->flow[i] = f;
}
}
void setPoint(int x, int y, bool isValid)
{
this->pt.x = (double) x;
this->pt.y = (double) y;
this->pt.isValid = isValid;
}
point getPoint()
{
return this->pt;
}
point* getFlow()
{
return this->flow;
}
void setFlow(double &xFlow, double &yFlow, int &position)
{
this->flow[position].x = xFlow;
this->flow[position].y = yFlow;
}
void updateFlow(int position)
{
this->flow[position].x = 2*this->flow[position].x;
this->flow[position].y = 2*this->flow[position].y;
}
void updateFlow(double xFlow, double yFlow, int position)
{
this->flow[position].x = xFlow;
this->flow[position].y = yFlow;
}
point pt;
point *flow;