求助,为什么Eigen库中的SparseMatrix不能在自定义类中创建

问题非常简单,代码如下:

 typedef SparseMatrix<double> SpMat;

class MyMat
{
public:
    SpMat XX(3, 3); // 错误,这里总提示输入类型说明符
};

int main()
{
    SpMat YY(3, 3); //此处正常
}

因为工作需要用到Eigen库中的稀疏矩阵,发现在main中创建正常,然而在自定义类中创建失败,提示输入类型说明符,求指导怎么创建才是正常。
另外顺道请教两个问题:
1.

 SparseMatrix<double,rowmajor,int>

中的int代表什么意思;
2.想类似

 typedef Matrix< double, 3, 3>  Matrix3d 

来创建一个3*3的double类型SparseMatrix的别名要怎么写?
感谢不吝赐教!

在类中使用该矩阵,当该动态矩阵作为类的成员时,不需要声明大小,写成SpMat XX;即可。
然后在具体使用的时候初始化,如: XX= MatrixXf::Zero(3, 3);//设为3*3全零矩阵

typedef Matrix< double, 3, 3> Matrix3d