Я ищу способ объявить и инициализировать постоянную структуру в моем файле заголовка класса.
Как видите, класс используется приложением MFC.
Слои в моем MFC Dialog никогда не изменятся, поэтому я бы хотел постоянно заботиться о них.
Я ищу что-то вроде этого:
class CLayerDialog : CDialogEx
{
...
public:
const LAYER_AREA(CPoint(0, 70), CPoint(280, 140));
}
Структура:
struct LAYER_AREA{
CPoint topLeft;
CPoint bottomRight;
};
Каков наилучший способ сделать это, чтобы сохранить как можно большую производительность и легко поддерживать слои?
Вы имеете в виду static const
переменная-член?
// header file
class CLayerDialog : CDialogEx
{
/* ... */
public:
static const LAYER_AREA myvar;
};
// source file
const LAYER_AREA CLayerDialog::myvar(CPoint(0, 70), CPoint(280, 140));
Обратите внимание, что переменная должны быть определены вне линии (в исходном файле, а не в заголовочном файле). Вам также понадобится соответствующий конструктор для struct LAYER_AREA
также.
Вы можете сделать что-то вроде этого: (Я сделал несколько предположений о классах, которые вы не предоставили)
в заголовочном файле
class CDialogEx
{
public:
CDialogEx (){}
};
class CPoint
{
public:
CPoint ( const int& _x, const int& _y ):x(_x), y(_y){}
private:
int x;
int y;
};
struct LAYER_AREA
{
CPoint topLeft;
CPoint bottomRight;
LAYER_AREA ( CPoint tl, CPoint br ):
topLeft ( tl ), bottomRight ( br )
{
}
};
class CLayerDialog : CDialogEx
{
public:
CLayerDialog ();
const LAYER_AREA myStructVar;
};
в .cpp файле
CLayerDialog::CLayerDialog()
: myStructVar ( CPoint(0, 70), CPoint(280, 140) )
{
}