Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何调用静态函数?_C++_Static Methods - Fatal编程技术网

C++ 如何调用静态函数?

C++ 如何调用静态函数?,c++,static-methods,C++,Static Methods,我在我的类Matrix中定义了两个函数,如下所示(在Matrix.hpp中) 在我的Matrix.Cpp文件中,我定义了以下函数: Matrix Matrix::MatCopy( Matrix &a ) { Matrix P( a.getRow() , a.getCol() , Empty ); int j=0; while( j != P.getRow() ){ int i=0; while( i != P.getCol() ){ P(j

我在我的类
Matrix
中定义了两个函数,如下所示(在Matrix.hpp中)

在我的Matrix.Cpp文件中,我定义了以下函数:

Matrix Matrix::MatCopy( Matrix &a )
{
Matrix P( a.getRow() , a.getCol() , Empty );
int j=0;
while( j != P.getRow() ){    
    int i=0;
    while( i != P.getCol() ){    
        P(j,i)=a(j,i);
        ++i;
    }
    ++j;
}
return P;
}

Matrix Matrix::MatInvert( Matrix &x )
{
Matrix aa = Matrix::MatCopy(x); // i got error message here
int n = aa.getCol();

Matrix ab(n,1,Empty);
Matrix ac(n,n,Empty);
Matrix ad(n,1,Empty);

if(MatLu(aa,ad)==-1){
    assert( "singular Matrix" );
    exit(1);
}
int i=0;
while( i != n ){    
    ab.fill(Zero);
    ab (i,0)=1.0;
    MatRuecksub(aa, ab,ac,ad,i);
    ++i;
}
 return ac; 
}
好的,这是我的MatDef函数

double Matrix::MatDet( Matrix &x )
{
double result;
     double vorz[2] = {1.0, -1.0};
int n = x.getRow();
Matrix a = Matrix::MatCopy(x);
Matrix p( n, 1, Empty);

int i = MatLu(a, p);
if(i==-1){  
    result = 0.0;
}
else {  
    result = 1.0;
    int j=0;
    while(j != n){    
        result *= a( static_cast<int>(p(j,0)) ,j);
        ++j;
    }
    result *= vorz[i%2];
}
  return result;
 }
我不明白问题是什么,因为我对C++编程很陌生,请帮助我解决这个错误。 我用过的地方

  Matrix aa = Matrix::MatCopy(x);
它显示与第306行相同的错误消息,但注释不同,因此我认为
MatDef
不是问题。
请给出您的意见以解决此问题。谢谢

如果您有一个名为a的类,并且它有一个静态函数foo,那么您可以这样调用它

A::foo();

如果您有一个名为a的类,并且它有一个静态函数foo,那么您可以这样调用它

A::foo();

您似乎试图从该类的静态成员函数访问该类的变量。静态成员函数无法访问类的正则变量

您需要检查@Woot4Moo建议的链接:


您似乎试图从该类的静态成员函数访问该类的变量。静态成员函数无法访问类的正则变量

您需要检查@Woot4Moo建议的链接:


能否提供如何调用该方法的代码?我想你很接近了…你给我们看的代码中似乎没有出现可能的错误重复(消息说它在
Matrix::MatDet
中)。请发布该代码,并指出错误所在的行。问题似乎在MatDet中,而这不在你的代码中。因为错误消息中至少有一个打字错误(现在已修复),我想知道方括号是否也是打字错误?省略行号和其他信息也无济于事。你能提供如何调用该方法的代码吗?我想你很接近了……你给我们看的代码中似乎没有出现可能重复的错误(消息说它在
Matrix::MatDet
中。请发布该代码,并指出错误所在的行。问题似乎在MatDet中,而您的代码中没有。因为错误消息中至少有一个打字错误(现已修复),我想知道方括号是否也是打字错误?省略行号和其他信息也无济于事。
A::foo();