C++ 本征C++;断言失败

C++ 本征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

我有一个特征矩阵xD对象,叫做v,当我试图访问这个矩阵内容时,我面临一些问题。当我只在控制台上打印内容(如代码中所示)时,效果也一样好。当我尝试使用内容时,会出现以下错误:

断言失败:(row>=0&&row=0&&col
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;