Объявите и инициализируйте структуру const в заголовке класса

Я ищу способ объявить и инициализировать постоянную структуру в моем файле заголовка класса.
Как видите, класс используется приложением MFC.
Слои в моем MFC Dialog никогда не изменятся, поэтому я бы хотел постоянно заботиться о них.

Я ищу что-то вроде этого:

class CLayerDialog : CDialogEx
{
...
public:
const LAYER_AREA(CPoint(0, 70), CPoint(280, 140));
}

Структура:

struct LAYER_AREA{
CPoint topLeft;
CPoint bottomRight;
};

Каков наилучший способ сделать это, чтобы сохранить как можно большую производительность и легко поддерживать слои?

2

Решение

Вы имеете в виду 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 также.

2

Другие решения

Вы можете сделать что-то вроде этого: (Я сделал несколько предположений о классах, которые вы не предоставили)

в заголовочном файле

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) )
{

}
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector