有類聲明為
class CSquare
{
public:
CSquare();
CSquare(int row ,int col);
};
class CUseSquare
{
CSquare square(16,16);//報錯C2059:syntax error:"constant"
};
要如何聲明呢??
class CSquare
{
public:
CSquare();
CSquare(int row ,int col);
};
class CUseSquare
{
CSquare square(16,16);//報錯C2059:syntax error:"constant"
};
要如何聲明呢??
class CUseSquare
{
CSquare *pSquare;
};
在cpp中:
CUseSquare::CUseSquare()
{
pSquare = new CSquare(16,16);
}
然后在CUseSquare的构造函数中调用CSquare的SetSquare来初始化
在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);
}
构造函数中new一下如果只在初始化的时候要用,提供个接口就有点浪费
头文件中: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)
{
};