有類聲明為
class CSquare  
{
public:
CSquare();
CSquare(int row ,int col);
};
class CUseSquare
{
    CSquare square(16,16);//報錯C2059:syntax error:"constant"
};
要如何聲明呢??

解决方案 »

  1.   

    第一种:申明指针类型
    class CUseSquare
    {
        CSquare *pSquare;
    };
    在cpp中:
    CUseSquare::CUseSquare()
    {
        pSquare = new CSquare(16,16);
    }
      

  2.   

    为CSquare添加设置接口来设置row和col,比如:void SetSquare(int row,int col);
    然后在CUseSquare的构造函数中调用CSquare的SetSquare来初始化
      

  3.   

    第二种:
    在CSquare 类中重载=操作符
    比如
    class CSquare  
    {
    public:
    CSquare();
    CSquare(int row ,int col);
             void Operator = (CSquare &squ);
    };
    然后:
    class CUseSquare
    {
        CSquare Square;
    };
    在cpp中:
    CUseSquare::CUseSquare()
    {
        Square = CSquare(16,16);
    }
      

  4.   

    重载=操作符是个好方法最简单的就是在用到的头文件种声明下类,然后定义为类指针
    构造函数中new一下如果只在初始化的时候要用,提供个接口就有点浪费
      

  5.   

    我再提供一种方法:
    头文件中:class CSquare  
    {
    public:
    CSquare();
    CSquare(int row ,int col);
    private:
    int nRow, nCol;
    };
    class CUseSquare
    {
    public:
    CUseSquare();
    private:
        CSquare square;
    };.cpp文件中:CSquare::CSquare()
    {
    ;
    }
    CSquare::CSquare(int row ,int col)
    {
    nRow = row;
    nCol = col;
    }CUseSquare::CUseSquare()
    : square(16, 16)
    {
    };