class Judgement
{
public:
         Judgement():nMaxM(8),nMaxN(3)
    {
         //nMaxM = 8;
         //nMaxN = 3;
         p_vMatrix = new int*[nMaxM];
                for(int i=0; i<nMaxM; i++){
                     p_vMatrix[i] = new int[nMaxN];
                }
    }
    ~Judgement()
    {
            for(int i=0; i<nMaxM; i++){
                 delete p_vMatrix[i];  
            }
            delete p_vMatrix;
    }    
private:
         const int nMaxM;
         const int nMaxN;
         //int v_Matrix[nMaxM][nMaxN];
         int **p_vMatrix;
        
};

C++为类中提供类成员的初始化列表
类对象的构造顺序是这样的:
1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员
2.进入构造函数后在构造函数中执行一般计算
  1.类里面的任何成员变量在定义时是不能初始化的。
  2.一般的数据成员可以在构造函数中初始化。
  3.const数据成员必须在构造函数的初始化列表中初始化。
  4.static要在类的定义外面初始化。   
  5.数组成员是不能在初始化列表里初始化的。
  6.不能给数组指定明显的初始化。   
这6条一起,说明了一个问题:C++里面是不能定义常量数组的!因为3和5的矛盾。这个事情似乎说不过去啊?没有办法,我只好转而求助于静态数据成员。
到此,我的问题解决。但是我还想趁机复习一下C++类的初始化:
  1.初始化列表:CSomeClass::CSomeClass() : x(0), y(1){}
  2.类外初始化:int CSomeClass::myVar=3;
  3.const常量定义必须初始化,C++类里面使用初始化列表;
  4.C++类不能定义常量数组。

class exp
{ public:
         exp();
         ~exp();
         unsigned int array[20];

};
        如果我们希望实现unsigned int array[20]={1,2,3};的功能,则可以改变此类的定义如下:
        class exp
{ public:
         exp();
         ~exp();
         unsigned int *array;

};
        然后在结构函数exp()中定义:
        static unsigned int tmp[20]={1,2,3};
        array=tmp;
        注意这里必须要用static,否则在exp()函数执行完毕后,tmp[]数组的空间会被释放,array所指向的地址中存放的数组会显示为空。
或者直接就用静态数组算了...

三.static 和 const static 
  1. class myClass  
  2. {  
  3. public:  
  4.     static int a;  
  5.     myClass()  
  6.     {  
  7.     }  
  8. };  
  9. int myClass::a = 3; // here initialize  
  10. int main()  
  11. {  
  12.        cout << myClass::a;  
  13.        return 0;  
  14. }  

class myClass
{
public:
const static int a=3; // here initialize
myClass()
{
}
};

or // const int myClass::a = 3;
二级指针:-- 用指针数组做
#include <stdio.h>
#include <string.h>

int search(char (*p)[20],char *str);

void main()
{
char str[5][20]={"avddx","12658","sewxx","ssxer","abcde"},s_str[20];
int line;
printf("Please input the string you want to search:");
gets(s_str);
line=search(str,s_str);
printf ("line = %d\n", line);
}
int search(char (*p)[20],char *str)
{
int i;
for(i=0;i<5;i++)
    if(strcmp((const char*)*(p+i),str)==0)
     return i;
}